fluent-plugin-kafka 0.6.3 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2b9941b6f4988f1fb14b5a0a591a81574411f915
4
- data.tar.gz: '08c543d8db1c038e908584460e39a6a9df89e86c'
2
+ SHA256:
3
+ metadata.gz: efe26ba34b8d77d120aa8c7babfaa69360520698079dee0be5caefb388964e4a
4
+ data.tar.gz: 0c42b0e54db31526150f1e0f71ee94a7c336112c649e0f39d77a4104f7202268
5
5
  SHA512:
6
- metadata.gz: 253f7354704fecc1fa1d21bc84056727169fc9dcbcbde55afe595ae9c882213dae910c82bd2b7e34918169f9275f6a8ab031646405409a115912a92f93092b94
7
- data.tar.gz: 87cdd5a750bc91c036901d64f76fda7ae874a7fcc16f9f573311bfc5a061492e6d5a3612c6c3378bf7ab34f7a99b8f6b029d75405a2ef240cf3bb40c709498f0
6
+ metadata.gz: 95baf194bcc5a486cf1c924500468f49f31a6c9f55ce39f811f37b221017f75956002110c260ab1577f8d701b4f917364ce6042d9507a105254ca3c013395ca8
7
+ data.tar.gz: 8de6a01fd63e12c6f34ab91522db088b6fd25fc6d1b2d924d3b1e69c4fb11f7e773ae07a0be6790a7bfcb7e5c6f060594ab4b1c84c5eb4f856a40b52a3c6cf02
data/ChangeLog CHANGED
@@ -1,3 +1,10 @@
1
+ Release 0.6.4 - 2017/11/23
2
+
3
+ * Multi worker support for v0.14
4
+ * Add kafka_message_key parameter to input plugins
5
+ * Relax ruby-kafka version for 0.5 or later
6
+ * Use oj for json when it is installed
7
+
1
8
  Release 0.6.3 - 2017/11/14
2
9
 
3
10
  * in_kafka_group: re-create consumer when error happens during event fetch
data/LICENSE CHANGED
@@ -1,22 +1,14 @@
1
- Copyright (c) 2014 htgc
1
+ Copyright (C) 2014 htgc
2
2
 
3
- MIT License
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
4
6
 
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
7
+ http://www.apache.org/licenses/LICENSE-2.0
12
8
 
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
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.
15
14
 
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -6,18 +6,19 @@ Gem::Specification.new do |gem|
6
6
  gem.description = %q{Fluentd plugin for Apache Kafka > 0.8}
7
7
  gem.summary = %q{Fluentd plugin for Apache Kafka > 0.8}
8
8
  gem.homepage = "https://github.com/fluent/fluent-plugin-kafka"
9
+ gem.license = "Apache-2.0"
9
10
 
10
11
  gem.files = `git ls-files`.split($\)
11
12
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
14
  gem.name = "fluent-plugin-kafka"
14
15
  gem.require_paths = ["lib"]
15
- gem.version = '0.6.3'
16
+ gem.version = '0.6.4'
16
17
  gem.required_ruby_version = ">= 2.1.0"
17
18
 
18
19
  gem.add_dependency "fluentd", [">= 0.10.58", "< 2"]
19
20
  gem.add_dependency 'ltsv'
20
- gem.add_dependency 'ruby-kafka', '~> 0.4.1'
21
+ gem.add_dependency 'ruby-kafka', '>= 0.4.1', '< 1.0.0'
21
22
  gem.add_development_dependency "rake", ">= 0.9.2"
22
23
  gem.add_development_dependency "test-unit", ">= 3.0.8"
23
24
  end
@@ -36,6 +36,8 @@ class Fluent::KafkaInput < Fluent::Input
36
36
  :desc => "Replace message timestamp with contents of 'time' field."
37
37
  config_param :time_format, :string, :default => nil,
38
38
  :desc => "Time format to be used to parse 'time' filed."
39
+ config_param :kafka_message_key, :string, :default => nil,
40
+ :desc => "Set kafka's message key to this field"
39
41
 
40
42
  # Kafka#fetch_messages options
41
43
  config_param :max_bytes, :integer, :default => nil,
@@ -113,12 +115,22 @@ class Fluent::KafkaInput < Fluent::Input
113
115
  def setup_parser
114
116
  case @format
115
117
  when 'json'
116
- require 'yajl'
117
- Proc.new { |msg, te|
118
- r = Yajl::Parser.parse(msg.value)
119
- add_offset_in_hash(r, te, msg.offset) if @add_offset_in_record
120
- r
121
- }
118
+ begin
119
+ require 'oj'
120
+ Oj.default_options = Fluent::DEFAULT_OJ_OPTIONS
121
+ Proc.new { |msg, te|
122
+ r = Oj.load(msg.value)
123
+ add_offset_in_hash(r, te, msg.offset) if @add_offset_in_record
124
+ r
125
+ }
126
+ rescue LoadError
127
+ require 'yajl'
128
+ Proc.new { |msg, te|
129
+ r = Yajl::Parser.parse(msg.value)
130
+ add_offset_in_hash(r, te, msg.offset) if @add_offset_in_record
131
+ r
132
+ }
133
+ end
122
134
  when 'ltsv'
123
135
  require 'ltsv'
124
136
  Proc.new { |msg, te|
@@ -175,6 +187,7 @@ class Fluent::KafkaInput < Fluent::Input
175
187
  @add_suffix,
176
188
  offset_manager,
177
189
  router,
190
+ @kafka_message_key,
178
191
  opt)
179
192
  }
180
193
  @topic_watchers.each {|tw|
@@ -199,7 +212,7 @@ class Fluent::KafkaInput < Fluent::Input
199
212
  end
200
213
 
201
214
  class TopicWatcher < Coolio::TimerWatcher
202
- def initialize(topic_entry, kafka, interval, parser, add_prefix, add_suffix, offset_manager, router, options={})
215
+ def initialize(topic_entry, kafka, interval, parser, add_prefix, add_suffix, offset_manager, router, kafka_message_key, options={})
203
216
  @topic_entry = topic_entry
204
217
  @kafka = kafka
205
218
  @callback = method(:consume)
@@ -209,6 +222,7 @@ class Fluent::KafkaInput < Fluent::Input
209
222
  @options = options
210
223
  @offset_manager = offset_manager
211
224
  @router = router
225
+ @kafka_message_key = kafka_message_key
212
226
 
213
227
  @next_offset = @topic_entry.offset
214
228
  if @topic_entry.offset == -1 && offset_manager
@@ -254,6 +268,9 @@ class Fluent::KafkaInput < Fluent::Input
254
268
  else
255
269
  record_time = Fluent::Engine.now
256
270
  end
271
+ if @kafka_message_key
272
+ record[@kafka_message_key] = msg.key
273
+ end
257
274
  es.add(record_time, record)
258
275
  rescue => e
259
276
  $log.warn "parser error in #{@topic_entry.topic}/#{@topic_entry.partition}", :error => e.to_s, :value => msg.value, :offset => msg.offset
@@ -25,6 +25,8 @@ class Fluent::KafkaGroupInput < Fluent::Input
25
25
  :desc => "Replace message timestamp with contents of 'time' field."
26
26
  config_param :time_format, :string, :default => nil,
27
27
  :desc => "Time format to be used to parse 'time' filed."
28
+ config_param :kafka_message_key, :string, :default => nil,
29
+ :desc => "Set kafka's message key to this field"
28
30
 
29
31
  config_param :retry_wait_seconds, :integer, :default => 30
30
32
  # Kafka consumer options
@@ -74,6 +76,10 @@ class Fluent::KafkaGroupInput < Fluent::Input
74
76
  config_array
75
77
  end
76
78
 
79
+ def multi_workers_ready?
80
+ true
81
+ end
82
+
77
83
  private :_config_to_array
78
84
 
79
85
  def configure(conf)
@@ -108,8 +114,14 @@ class Fluent::KafkaGroupInput < Fluent::Input
108
114
  def setup_parser
109
115
  case @format
110
116
  when 'json'
111
- require 'yajl'
112
- Proc.new { |msg| Yajl::Parser.parse(msg.value) }
117
+ begin
118
+ require 'oj'
119
+ Oj.default_options = Fluent::DEFAULT_OJ_OPTIONS
120
+ Proc.new { |msg| Oj.load(msg.value) }
121
+ rescue LoadError
122
+ require 'yajl'
123
+ Proc.new { |msg| Yajl::Parser.parse(msg.value) }
124
+ end
113
125
  when 'ltsv'
114
126
  require 'ltsv'
115
127
  Proc.new { |msg| LTSV.parse(msg.value, {:symbolize_keys => false}).first }
@@ -123,7 +135,7 @@ class Fluent::KafkaGroupInput < Fluent::Input
123
135
 
124
136
  def start
125
137
  super
126
-
138
+
127
139
  @kafka = Kafka.new(seed_brokers: @brokers,
128
140
  ssl_ca_cert: read_ssl_file(@ssl_ca_cert),
129
141
  ssl_client_cert: read_ssl_file(@ssl_client_cert),
@@ -189,6 +201,9 @@ class Fluent::KafkaGroupInput < Fluent::Input
189
201
  else
190
202
  record_time = Fluent::Engine.now
191
203
  end
204
+ if @kafka_message_key
205
+ record[@kafka_message_key] = msg.key
206
+ end
192
207
  es.add(record_time, record)
193
208
  rescue => e
194
209
  log.warn "parser error in #{batch.topic}/#{batch.partition}", :error => e.to_s, :value => msg.value, :offset => msg.offset
@@ -149,6 +149,10 @@ DESC
149
149
  end
150
150
  end
151
151
 
152
+ def multi_workers_ready?
153
+ true
154
+ end
155
+
152
156
  def start
153
157
  super
154
158
  refresh_client
@@ -98,6 +98,10 @@ DESC
98
98
  @producers_mutex = Mutex.new
99
99
  end
100
100
 
101
+ def multi_workers_ready?
102
+ true
103
+ end
104
+
101
105
  def refresh_client(raise_error = true)
102
106
  if @zookeeper
103
107
  @seed_brokers = []
@@ -218,8 +222,14 @@ DESC
218
222
 
219
223
  def setup_formatter(conf)
220
224
  if @output_data_type == 'json'
221
- require 'yajl'
222
- Proc.new { |tag, time, record| Yajl::Encoder.encode(record) }
225
+ begin
226
+ require 'oj'
227
+ Oj.default_options = Fluent::DEFAULT_OJ_OPTIONS
228
+ Proc.new { |tag, time, record| Oj.dump(record) }
229
+ rescue LoadError
230
+ require 'yajl'
231
+ Proc.new { |tag, time, record| Yajl::Encoder.encode(record) }
232
+ end
223
233
  elsif @output_data_type == 'ltsv'
224
234
  require 'ltsv'
225
235
  Proc.new { |tag, time, record| LTSV.dump(record) }
@@ -43,6 +43,12 @@ class KafkaOutputTest < Test::Unit::TestCase
43
43
  d = create_driver
44
44
  end
45
45
 
46
+ def test_mutli_worker_support
47
+ d = create_driver
48
+ assert_equal true, d.instance.multi_workers_ready?
49
+
50
+ end
51
+
46
52
  def test_write
47
53
  d = create_driver
48
54
  time = Time.parse("2011-01-02 13:14:15 UTC").to_i
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-kafka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hidemasa Togashi
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-11-15 00:00:00.000000000 Z
12
+ date: 2017-11-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -49,16 +49,22 @@ dependencies:
49
49
  name: ruby-kafka
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.4.1
55
+ - - "<"
56
+ - !ruby/object:Gem::Version
57
+ version: 1.0.0
55
58
  type: :runtime
56
59
  prerelease: false
57
60
  version_requirements: !ruby/object:Gem::Requirement
58
61
  requirements:
59
- - - "~>"
62
+ - - ">="
60
63
  - !ruby/object:Gem::Version
61
64
  version: 0.4.1
65
+ - - "<"
66
+ - !ruby/object:Gem::Version
67
+ version: 1.0.0
62
68
  - !ruby/object:Gem::Dependency
63
69
  name: rake
64
70
  requirement: !ruby/object:Gem::Requirement
@@ -113,7 +119,8 @@ files:
113
119
  - test/helper.rb
114
120
  - test/plugin/test_out_kafka.rb
115
121
  homepage: https://github.com/fluent/fluent-plugin-kafka
116
- licenses: []
122
+ licenses:
123
+ - Apache-2.0
117
124
  metadata: {}
118
125
  post_install_message:
119
126
  rdoc_options: []
@@ -131,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
138
  version: '0'
132
139
  requirements: []
133
140
  rubyforge_project:
134
- rubygems_version: 2.6.13
141
+ rubygems_version: 2.7.2
135
142
  signing_key:
136
143
  specification_version: 4
137
144
  summary: Fluentd plugin for Apache Kafka > 0.8