fluent-plugin-kafka-custom-ruby-version 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b9e142700a225fe4ab16e9c2084cff87cff2b488
4
+ data.tar.gz: 93f617d0c3f68eb826e28a57365791e37e0d3251
5
+ SHA512:
6
+ metadata.gz: ff5e26dc07c48c705e0d63ec13eb5fc30af29d132ae1e0e285a061680c454b0bcb069228b9571124f3c9cb810364b891430c0fbcf629b4a8bff84ac9b1930254
7
+ data.tar.gz: f7ea83c541088d50872f27f181cca77a49018b6ff2ac7cbed0a55c552bb7298d0919d7190b39e3502fcbefb66cc05383c7a46bbcccb0d8ef024ace61a7cc8c10
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ /Gemfile.lock
2
+ *.swp
data/.project ADDED
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>fluent-plugin-kafka-master-custom-ruby-version</name>
4
+ <comment></comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ </buildSpec>
9
+ <natures>
10
+ </natures>
11
+ </projectDescription>
data/.travis.yml ADDED
@@ -0,0 +1,21 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.1
5
+ - 2.2
6
+ - 2.3.1
7
+ - 2.4.1
8
+ - 2.5.0
9
+ - ruby-head
10
+
11
+ before_install:
12
+ - gem update --system=2.7.8
13
+ script:
14
+ - bundle exec rake test
15
+
16
+ sudo: false
17
+
18
+ matrix:
19
+ allow_failures:
20
+ - rvm: ruby-head
21
+
data/ChangeLog ADDED
@@ -0,0 +1,183 @@
1
+ Release 0.9.0 - 2019/02/22
2
+
3
+ * Add v1 API based rdkafka2 output plugin
4
+ * out_kafka2: Add use_default_for_unknown_topic parameter
5
+
6
+ Release 0.8.4 - 2019/01/18
7
+
8
+ * in_kafka_group: Support integer/float time field with time_format
9
+
10
+ Release 0.8.3 - 2018/12/16
11
+
12
+ * output: Add ssl_client_cert_chain parameter
13
+
14
+ Release 0.8.2 - 2018/12/07
15
+
16
+ * output: Add idempotent parameter
17
+ * out_kafka2: Fix DeliveryFailed signature mismatch
18
+
19
+ Release 0.8.1 - 2018/11/20
20
+
21
+ * input: Support SASL without SSL
22
+
23
+ Release 0.8.0 - 2018/10/18
24
+
25
+ * output: Support SASL without SSL
26
+ * output: Add rdkafka based output
27
+ * Update ruby-kafka dependency to v0.7 or later
28
+
29
+ Release 0.7.9 - 2018/09/11
30
+
31
+ * in_kafka_group: Add fetcher_max_queue_size parameter
32
+
33
+ Release 0.7.8 - 2018/08/29
34
+
35
+ * input: Fix regression of kafka initialization
36
+
37
+ Release 0.7.7 - 2018/08/27
38
+
39
+ * in_kafka_group: Add retry_limit and disable_retry_limit parameters
40
+ * input: Support SSL parameters
41
+ * Add ssl_ca_certs_from_system parameter
42
+ * Make password parameter secret
43
+
44
+ Release 0.7.6 - 2018/08/15
45
+
46
+ * out_kafka2: Add ignore_exceptions and exception_backup parameters
47
+
48
+ Release 0.7.5 - 2018/08/14
49
+
50
+ * out_kafka2: Fix `message_key_key` parameter handling
51
+ * Limit ruby-kafka version('< 0.7.0') to avoid runtime error
52
+
53
+ Release 0.7.4 - 2018/07/11
54
+
55
+ * out_kafka2: Need event_emitter helper for notification
56
+
57
+ Release 0.7.3 - 2018/05/30
58
+
59
+ * output: Use SSL endpoint when ssl_client_cert is true
60
+
61
+ Release 0.7.2 - 2018/03/12
62
+
63
+ * output: Fix the regression of get_kafka_client_log parameter
64
+
65
+ Release 0.7.1 - 2018/03/05
66
+
67
+ * out_kafka2: Fix the regression of kafka client initialization
68
+
69
+ Release 0.7.0 - 2018/02/27
70
+
71
+ * output: SASL PLAIN/SCRAM support
72
+ * input: Fix TimeParser location bug in v1
73
+ * out_kafka2: Fix warning condition for tag chunk key
74
+
75
+ Release 0.6.6 - 2017/12/25
76
+
77
+ * output: Make topic/partition/partition_key/message_key configurable
78
+
79
+ Release 0.6.5 - 2017/12/14
80
+
81
+ * in_kafka_group: Add client_id parameter
82
+
83
+ Release 0.6.4 - 2017/11/23
84
+
85
+ * Multi worker support for v0.14
86
+ * Add kafka_message_key parameter to input plugins
87
+ * Relax ruby-kafka version for 0.5 or later
88
+ * Use oj for json when it is installed
89
+
90
+ Release 0.6.3 - 2017/11/14
91
+
92
+ * in_kafka_group: re-create consumer when error happens during event fetch
93
+
94
+ Release 0.6.2 - 2017/11/1
95
+
96
+ * Fix ltsv parsing issue which generates symbol keys
97
+
98
+ Release 0.6.1 - 2017/08/30
99
+
100
+ * Add stats and datadog monitoring support
101
+ * ssl_ca_certs now accepts multiple paths
102
+ * Fix bug by ruby-kafka 0.4.1 changes
103
+ * Update ruby-kafka dependency to v0.4.1
104
+
105
+ Release 0.6.0 - 2017/07/25
106
+
107
+ * Add principal and keytab parameters for SASL support
108
+
109
+ Release 0.5.7 - 2017/07/13
110
+
111
+ * out_kafka_buffered: Add kafka_agg_max_messages parameter
112
+
113
+ Release 0.5.6 - 2017/07/10
114
+
115
+ * output: Add ActiveSupport notification support
116
+
117
+ Release 0.5.5 - 2017/04/19
118
+
119
+ * output: Some trace log level changed to debug
120
+ * out_kafka_buffered: Add discard_kafka_delivery_failed parameter
121
+
122
+ Release 0.5.4 - 2017/04/12
123
+
124
+ * out_kafka_buffered: Add max_send_limit_bytes parameter
125
+ * out_kafka: Improve buffer overflow handling of ruby-kafka
126
+
127
+ Release 0.5.3 - 2017/02/13
128
+
129
+ * Relax ruby-kafka dependency
130
+
131
+ Release 0.5.2 - 2017/02/13
132
+
133
+ * in_kafka_group: Add max_bytes parameter
134
+
135
+ Release 0.5.1 - 2017/02/06
136
+
137
+ * in_kafka_group: Fix uninitialized constant error
138
+
139
+ Release 0.5.0 - 2017/01/17
140
+
141
+ * output: Add out_kafka2 plugin with v0.14 API
142
+
143
+ Release 0.4.2 - 2016/12/10
144
+
145
+ * input: Add use_record_time and time_format parameters
146
+ * Update ruby-kafka dependency to 0.3.16.beta2
147
+
148
+ Release 0.4.1 - 2016/12/01
149
+
150
+ * output: Support specifying partition
151
+
152
+ Release 0.4.0 - 2016/11/08
153
+
154
+ * Remove zookeeper dependency
155
+
156
+ Release 0.3.5 - 2016/10/21
157
+
158
+ * output: Support message key and related parameters. #91
159
+
160
+ Release 0.3.4 - 2016/10/20
161
+
162
+ * output: Add exclude_topic_key and exclude_partition_key. #89
163
+
164
+ Release 0.3.3 - 2016/10/17
165
+
166
+ * out_kafka_buffered: Add get_kafka_client_log parameter. #83
167
+ * out_kafka_buffered: Skip and log invalid record to avoid buffer stuck. #86
168
+ * in_kafka_group: Add retry_emit_limit to handle BufferQueueLimitError. #87
169
+
170
+ Release 0.3.2 - 2016/10/06
171
+
172
+ * in_kafka_group: Re-fetch events after consumer error. #79
173
+
174
+ Release 0.3.1 - 2016/08/28
175
+
176
+ * output: Change default required_acks to -1. #70
177
+ * Support ruby version changed to 2.1.0 or later
178
+
179
+ Release 0.3.0 - 2016/08/24
180
+
181
+ * Fully replace poseidon ruby library with ruby-kafka to support latest kafka versions
182
+
183
+ See git commits for older changes
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fluent-plugin-kafka-custom-ruby-version.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,14 @@
1
+ Copyright (C) 2014 htgc
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
14
+
data/README.md ADDED
@@ -0,0 +1,333 @@
1
+ # fluent-plugin-kafka, a plugin for [Fluentd](http://fluentd.org)
2
+
3
+ [![Build Status](https://travis-ci.org/fluent/fluent-plugin-kafka.svg?branch=master)](https://travis-ci.org/fluent/fluent-plugin-kafka)
4
+
5
+ A fluentd plugin to both consume and produce data for Apache Kafka.
6
+
7
+ TODO: Also, I need to write tests
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'fluent-plugin-kafka'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install fluent-plugin-kafka --no-document
22
+
23
+ If you want to use zookeeper related parameters, you also need to install zookeeper gem. zookeeper gem includes native extension, so development tools are needed, e.g. gcc, make and etc.
24
+
25
+ ## Requirements
26
+
27
+ - Ruby 2.1 or later
28
+ - Input plugins work with kafka v0.9 or later
29
+ - Output plugins work with kafka v0.8 or later
30
+
31
+ ## Usage
32
+
33
+ ### Common parameters
34
+
35
+ #### SSL authentication
36
+
37
+ - ssl_ca_cert
38
+ - ssl_client_cert
39
+ - ssl_client_cert_key
40
+ - ssl_ca_certs_from_system
41
+
42
+ Set path to SSL related files. See [Encryption and Authentication using SSL](https://github.com/zendesk/ruby-kafka#encryption-and-authentication-using-ssl) for more detail.
43
+
44
+ #### SASL authentication
45
+
46
+ ##### with GSSAPI
47
+
48
+ - principal
49
+ - keytab
50
+
51
+ Set principal and path to keytab for SASL/GSSAPI authentication.
52
+ See [Authentication using SASL](https://github.com/zendesk/ruby-kafka#authentication-using-sasl) for more details.
53
+
54
+ ##### with Plain/SCRAM
55
+
56
+ - username
57
+ - password
58
+ - scram_mechanism
59
+ - sasl_over_ssl
60
+
61
+ Set username, password, scram_mechanism and sasl_over_ssl for SASL/Plain or Scram authentication.
62
+ See [Authentication using SASL](https://github.com/zendesk/ruby-kafka#authentication-using-sasl) for more details.
63
+
64
+ ### Input plugin (@type 'kafka')
65
+
66
+ Consume events by single consumer.
67
+
68
+ <source>
69
+ @type kafka
70
+
71
+ brokers <broker1_host>:<broker1_port>,<broker2_host>:<broker2_port>,..
72
+ topics <listening topics(separate with comma',')>
73
+ format <input text type (text|json|ltsv|msgpack)> :default => json
74
+ message_key <key (Optional, for text format only, default is message)>
75
+ add_prefix <tag prefix (Optional)>
76
+ add_suffix <tag suffix (Optional)>
77
+
78
+ # Optionally, you can manage topic offset by using zookeeper
79
+ offset_zookeeper <zookeer node list (<zookeeper1_host>:<zookeeper1_port>,<zookeeper2_host>:<zookeeper2_port>,..)>
80
+ offset_zk_root_node <offset path in zookeeper> default => '/fluent-plugin-kafka'
81
+
82
+ # ruby-kafka consumer options
83
+ max_bytes (integer) :default => nil (Use default of ruby-kafka)
84
+ max_wait_time (integer) :default => nil (Use default of ruby-kafka)
85
+ min_bytes (integer) :default => nil (Use default of ruby-kafka)
86
+ </source>
87
+
88
+ Supports a start of processing from the assigned offset for specific topics.
89
+
90
+ <source>
91
+ @type kafka
92
+
93
+ brokers <broker1_host>:<broker1_port>,<broker2_host>:<broker2_port>,..
94
+ format <input text type (text|json|ltsv|msgpack)>
95
+ <topic>
96
+ topic <listening topic>
97
+ partition <listening partition: default=0>
98
+ offset <listening start offset: default=-1>
99
+ </topic>
100
+ <topic>
101
+ topic <listening topic>
102
+ partition <listening partition: default=0>
103
+ offset <listening start offset: default=-1>
104
+ </topic>
105
+ </source>
106
+
107
+ See also [ruby-kafka README](https://github.com/zendesk/ruby-kafka#consuming-messages-from-kafka) for more detailed documentation about ruby-kafka.
108
+
109
+ Consuming topic name is used for event tag. So when the target topic name is `app_event`, the tag is `app_event`. If you want to modify tag, use `add_prefix` or `add_suffix` parameters. With `add_prefix kafka`, the tag is `kafka.app_event`.
110
+
111
+ ### Input plugin (@type 'kafka_group', supports kafka group)
112
+
113
+ Consume events by kafka consumer group features..
114
+
115
+ <source>
116
+ @type kafka_group
117
+
118
+ brokers <broker1_host>:<broker1_port>,<broker2_host>:<broker2_port>,..
119
+ consumer_group <consumer group name, must set>
120
+ topics <listening topics(separate with comma',')>
121
+ format <input text type (text|json|ltsv|msgpack)> :default => json
122
+ message_key <key (Optional, for text format only, default is message)>
123
+ add_prefix <tag prefix (Optional)>
124
+ add_suffix <tag suffix (Optional)>
125
+ retry_emit_limit <Wait retry_emit_limit x 1s when BuffereQueueLimitError happens. The default is nil and it means waiting until BufferQueueLimitError is resolved>
126
+ use_record_time <If true, replace event time with contents of 'time' field of fetched record>
127
+ time_format <string (Optional when use_record_time is used)>
128
+
129
+ # ruby-kafka consumer options
130
+ max_bytes (integer) :default => 1048576
131
+ max_wait_time (integer) :default => nil (Use default of ruby-kafka)
132
+ min_bytes (integer) :default => nil (Use default of ruby-kafka)
133
+ offset_commit_interval (integer) :default => nil (Use default of ruby-kafka)
134
+ offset_commit_threshold (integer) :default => nil (Use default of ruby-kafka)
135
+ fetcher_max_queue_size (integer) :default => nil (Use default of ruby-kafka)
136
+ start_from_beginning (bool) :default => true
137
+ </source>
138
+
139
+ See also [ruby-kafka README](https://github.com/zendesk/ruby-kafka#consuming-messages-from-kafka) for more detailed documentation about ruby-kafka options.
140
+
141
+ Consuming topic name is used for event tag. So when the target topic name is `app_event`, the tag is `app_event`. If you want to modify tag, use `add_prefix` or `add_suffix` parameter. With `add_prefix kafka`, the tag is `kafka.app_event`.
142
+
143
+ ### Buffered output plugin
144
+
145
+ This plugin uses ruby-kafka producer for writing data. This plugin works with recent kafka versions.
146
+
147
+ <match app.**>
148
+ @type kafka_buffered
149
+
150
+ # Brokers: you can choose either brokers or zookeeper. If you are not familiar with zookeeper, use brokers parameters.
151
+ brokers <broker1_host>:<broker1_port>,<broker2_host>:<broker2_port>,.. # Set brokers directly
152
+ zookeeper <zookeeper_host>:<zookeeper_port> # Set brokers via Zookeeper
153
+ zookeeper_path <broker path in zookeeper> :default => /brokers/ids # Set path in zookeeper for kafka
154
+
155
+ topic_key (string) :default => 'topic'
156
+ partition_key (string) :default => 'partition'
157
+ partition_key_key (string) :default => 'partition_key'
158
+ message_key_key (string) :default => 'message_key'
159
+ default_topic (string) :default => nil
160
+ default_partition_key (string) :default => nil
161
+ default_message_key (string) :default => nil
162
+ output_data_type (json|ltsv|msgpack|attr:<record name>|<formatter name>) :default => json
163
+ output_include_tag (bool) :default => false
164
+ output_include_time (bool) :default => false
165
+ exclude_topic_key (bool) :default => false
166
+ exclude_partition_key (bool) :default => false
167
+ get_kafka_client_log (bool) :default => false
168
+
169
+ # See fluentd document for buffer related parameters: http://docs.fluentd.org/articles/buffer-plugin-overview
170
+
171
+ # ruby-kafka producer options
172
+ max_send_retries (integer) :default => 1
173
+ required_acks (integer) :default => -1
174
+ ack_timeout (integer) :default => nil (Use default of ruby-kafka)
175
+ compression_codec (gzip|snappy) :default => nil (No compression)
176
+ kafka_agg_max_bytes (integer) :default => 4096
177
+ kafka_agg_max_messages (integer) :default => nil (No limit)
178
+ max_send_limit_bytes (integer) :default => nil (No drop)
179
+ discard_kafka_delivery_failed (bool) :default => false (No discard)
180
+ monitoring_list (array) :default => []
181
+ </match>
182
+
183
+ `<formatter name>` of `output_data_type` uses fluentd's formatter plugins. See [formatter article](http://docs.fluentd.org/articles/formatter-plugin-overview).
184
+
185
+ ruby-kafka sometimes returns `Kafka::DeliveryFailed` error without good information.
186
+ In this case, `get_kafka_client_log` is useful for identifying the error cause.
187
+ ruby-kafka's log is routed to fluentd log so you can see ruby-kafka's log in fluentd logs.
188
+
189
+ Supports following ruby-kafka's producer options.
190
+
191
+ - max_send_retries - default: 1 - Number of times to retry sending of messages to a leader.
192
+ - required_acks - default: -1 - The number of acks required per request. If you need flush performance, set lower value, e.g. 1, 2.
193
+ - ack_timeout - default: nil - How long the producer waits for acks. The unit is seconds.
194
+ - compression_codec - default: nil - The codec the producer uses to compress messages.
195
+ - kafka_agg_max_bytes - default: 4096 - Maximum value of total message size to be included in one batch transmission.
196
+ - kafka_agg_max_messages - default: nil - Maximum number of messages to include in one batch transmission.
197
+ - max_send_limit_bytes - default: nil - Max byte size to send message to avoid MessageSizeTooLarge. For example, if you set 1000000(message.max.bytes in kafka), Message more than 1000000 byes will be dropped.
198
+ - discard_kafka_delivery_failed - default: false - discard the record where [Kafka::DeliveryFailed](http://www.rubydoc.info/gems/ruby-kafka/Kafka/DeliveryFailed) occurred
199
+ - monitoring_list - default: [] - library to be used to monitor. statsd and datadog are supported
200
+
201
+ If you want to know about detail of monitoring, see also https://github.com/zendesk/ruby-kafka#monitoring
202
+
203
+ See also [Kafka::Client](http://www.rubydoc.info/gems/ruby-kafka/Kafka/Client) for more detailed documentation about ruby-kafka.
204
+
205
+ This plugin supports compression codec "snappy" also.
206
+ Install snappy module before you use snappy compression.
207
+
208
+ $ gem install snappy --no-document
209
+
210
+ snappy gem uses native extension, so you need to install several packages before.
211
+ On Ubuntu, need development packages and snappy library.
212
+
213
+ $ sudo apt-get install build-essential autoconf automake libtool libsnappy-dev
214
+
215
+ On CentOS 7 installation is also necessary.
216
+
217
+ $ sudo yum install gcc autoconf automake libtool snappy-devel
218
+
219
+ #### Load balancing
220
+
221
+ Messages will be assigned a partition at random as default by ruby-kafka, but messages with the same partition key will always be assigned to the same partition by setting `default_partition_key` in config file.
222
+ If key name `partition_key` exists in a message, this plugin set its value of partition_key as key.
223
+
224
+ |default_partition_key|partition_key| behavior |
225
+ | --- | --- | --- |
226
+ |Not set|Not exists| All messages are assigned a partition at random |
227
+ |Set| Not exists| All messages are assigned to the specific partition |
228
+ |Not set| Exists | Messages which have partition_key record are assigned to the specific partition, others are assigned a partition at random |
229
+ |Set| Exists | Messages which have partition_key record are assigned to the specific partition with parition_key, others are assigned to the specific partition with default_parition_key |
230
+
231
+ If key name `message_key` exists in a message, this plugin publishes the value of message_key to kafka and can be read by consumers. Same message key will be assigned to all messages by setting `default_message_key` in config file. If message_key exists and if partition_key is not set explicitly, messsage_key will be used for partitioning.
232
+
233
+ ### Output plugin
234
+
235
+ This plugin is for fluentd v1.0 or later. This will be `out_kafka` plugin in the future.
236
+
237
+ <match app.**>
238
+ @type kafka2
239
+
240
+ brokers <broker1_host>:<broker1_port>,<broker2_host>:<broker2_port>,.. # Set brokers directly
241
+
242
+ topic_key (string) :default => 'topic'
243
+ partition_key (string) :default => 'partition'
244
+ partition_key_key (string) :default => 'partition_key'
245
+ message_key_key (string) :default => 'message_key'
246
+ default_topic (string) :default => nil
247
+ default_partition_key (string) :default => nil
248
+ default_message_key (string) :default => nil
249
+ exclude_topic_key (bool) :default => false
250
+ exclude_partition_key (bool) :default => false
251
+ get_kafka_client_log (bool) :default => false
252
+ use_default_for_unknown_topic (bool) :default => false
253
+
254
+ <format>
255
+ @type (json|ltsv|msgpack|attr:<record name>|<formatter name>) :default => json
256
+ </format>
257
+ <inject>
258
+ tag_key tag
259
+ time_key time
260
+ </inject>
261
+
262
+ # See fluentd document for buffer related parameters: http://docs.fluentd.org/articles/buffer-plugin-overview
263
+ # Buffer chunk key should be same with topic_key. If value is not found in the record, default_topic is used.
264
+ <buffer topic>
265
+ flush_interval 10s
266
+ </buffer>
267
+
268
+ # ruby-kafka producer options
269
+ max_send_retries (integer) :default => 1
270
+ required_acks (integer) :default => -1
271
+ ack_timeout (integer) :default => nil (Use default of ruby-kafka)
272
+ compression_codec (gzip|snappy) :default => nil (No compression)
273
+ </match>
274
+
275
+ ### Non-buffered output plugin
276
+
277
+ This plugin uses ruby-kafka producer for writing data. For performance and reliability concerns, use `kafka_bufferd` output instead. This is mainly for testing.
278
+
279
+ <match app.**>
280
+ @type kafka
281
+
282
+ # Brokers: you can choose either brokers or zookeeper.
283
+ brokers <broker1_host>:<broker1_port>,<broker2_host>:<broker2_port>,.. # Set brokers directly
284
+ zookeeper <zookeeper_host>:<zookeeper_port> # Set brokers via Zookeeper
285
+ zookeeper_path <broker path in zookeeper> :default => /brokers/ids # Set path in zookeeper for kafka
286
+
287
+ default_topic (string) :default => nil
288
+ default_partition_key (string) :default => nil
289
+ default_message_key (string) :default => nil
290
+ output_data_type (json|ltsv|msgpack|attr:<record name>|<formatter name>) :default => json
291
+ output_include_tag (bool) :default => false
292
+ output_include_time (bool) :default => false
293
+ exclude_topic_key (bool) :default => false
294
+ exclude_partition_key (bool) :default => false
295
+
296
+ # ruby-kafka producer options
297
+ max_send_retries (integer) :default => 1
298
+ required_acks (integer) :default => -1
299
+ ack_timeout (integer) :default => nil (Use default of ruby-kafka)
300
+ compression_codec (gzip|snappy) :default => nil
301
+ max_buffer_size (integer) :default => nil (Use default of ruby-kafka)
302
+ max_buffer_bytesize (integer) :default => nil (Use default of ruby-kafka)
303
+ </match>
304
+
305
+ This plugin also supports ruby-kafka related parameters. See Buffered output plugin section.
306
+
307
+ ### rdkafka based output plugin
308
+
309
+ This plugin uses `rdkafka` instead of `ruby-kafka` for ruby client.
310
+ You need to install rdkafka gem.
311
+
312
+ # rdkafka is C extension library so need development tools like ruby-devel, gcc and etc
313
+ $ gem install rdkafka --no-document
314
+
315
+ <match kafka.**>
316
+ @type rdkafka
317
+
318
+ default_topic kafka
319
+ flush_interval 1s
320
+ output_data_type json
321
+
322
+ rdkafka_options {
323
+ "log_level" : 7
324
+ }
325
+ </match>
326
+
327
+ ## Contributing
328
+
329
+ 1. Fork it
330
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
331
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
332
+ 4. Push to the branch (`git push origin my-new-feature`)
333
+ 5. Create new Pull Request