logstash-input-jms 3.2.2-java → 3.3.1-java

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
2
  SHA256:
3
- metadata.gz: 17ab471b9058d8bdc626619b3bd60948e8b15022b5c0d7b576295a23f9fd9a6a
4
- data.tar.gz: '09cc9532fc6183256f2d69b436d8dcd70ede94b89d14a8f9247e4f1d6baccf0e'
3
+ metadata.gz: 439f29fea2225b00c4b170feec416693450ec6536ce14d7b4e78c67c71865b9c
4
+ data.tar.gz: 8c1eec0ab93ac8ac3c7800cd276ea4241eb509a8e5a581a7b55cc352bc99bc2f
5
5
  SHA512:
6
- metadata.gz: cf73ec01b747be388ca3e091512806335ddb109d20844710c3bf5acfddd2bf460c8c5ad4210d54da38c5d99fecb140f75ce45f22f374ee220d379ede4d29a8f4
7
- data.tar.gz: df5bf8bc4f1a0fb8efadb71083cc110a5c640c48f637adfb2ce43af0d8daeabfda087519547944966b2a9bc22f23d3342c82346004d7fbb68ddb13ff13d72392
6
+ metadata.gz: 1642d6d70049790f9b1bcef286590e67fb3cd3060eefc8e58e5f8735c7ab9f441d3147dcbb6df0d65dd403e6ed35eeba4732555a8624804048af1d275e491b42
7
+ data.tar.gz: 7829fce7bbd96851992825306ce7893f7a4381258716a04f85e8726ea0723e92012799bc2d2d15baa1e5794d2f1684bc76ce029f8cebe199480e0cf6c2f02e30
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 3.3.1
2
+ - Fixed a regression introduced in 3.3.0 where `add_field` is no longer enriching events [#59](https://github.com/logstash-plugins/logstash-input-jms/pull/59)
3
+
4
+ ## 3.3.0
5
+ - Added support for decoding multiple events from text or binary messages when using a codec that produces multiple events [#56](https://github.com/logstash-plugins/logstash-input-jms/pull/56)
6
+
1
7
  ## 3.2.2
2
8
  - Fix: Remove usage of `java_kind_of?` to allow this plugin to be supported for versions of Logstash using jruby-9.3.x
3
9
  [#54](https://github.com/logstash-plugins/logstash-input-jms/pull/54)
@@ -276,7 +276,7 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
276
276
  # read from the queue/topic until :timeout is reached, or a message is available
277
277
  # (whichever comes first)
278
278
  do_receive_message(subscriber, timeout: @interval * 1000) do |message|
279
- queue_event(message, output_queue)
279
+ queue_events(message, output_queue)
280
280
  break if stop?
281
281
  end
282
282
  end
@@ -296,20 +296,27 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
296
296
  end
297
297
  end # def run_consumer
298
298
 
299
- def queue_event(msg, output_queue)
300
- begin
301
- if @include_body
302
- if msg.kind_of?(JMS::MapMessage)
303
- event = process_map_message(msg)
304
- elsif msg.kind_of?(JMS::TextMessage) || msg.kind_of?(JMS::BytesMessage)
305
- event = decode_message(msg)
306
- else
307
- @logger.error( "Unsupported message type #{msg.data.class.to_s}" )
308
- end
299
+ def events(msg, &event_handler)
300
+ return enum_for(:events, msg).to_a unless block_given?
301
+
302
+ if @include_body
303
+ if msg.kind_of?(JMS::MapMessage)
304
+ return process_map_message(msg, &event_handler)
305
+ elsif msg.kind_of?(JMS::TextMessage) || msg.kind_of?(JMS::BytesMessage)
306
+ return process_string_message(msg, &event_handler)
307
+ else
308
+ @logger.error( "Unsupported message type #{msg.data.class.to_s}" )
309
309
  end
310
+ end
310
311
 
311
- event ||= event_factory.new_event
312
+ yield event_factory.new_event
313
+ rescue => e
314
+ @logger.error("Failed to create event", :message => msg, :exception => e,
315
+ :backtrace => e.backtrace)
316
+ end
312
317
 
318
+ def queue_events(msg, output_queue)
319
+ events(msg).map do |event|
313
320
  # Here, we can use the JMS Enqueue timestamp as the @timestamp
314
321
  if @use_jms_timestamp && msg.jms_timestamp
315
322
  event.set("@timestamp", LogStash::Timestamp.at(msg.jms_timestamp / 1000, (msg.jms_timestamp % 1000) * 1000))
@@ -328,11 +335,9 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
328
335
  end
329
336
 
330
337
  decorate(event)
331
- output_queue << event
332
-
333
- rescue => e # parse or event creation error
334
- @logger.error("Failed to create event", :message => msg, :exception => e,
335
- :backtrace => e.backtrace)
338
+ event
339
+ end.each do |ready_event|
340
+ output_queue << ready_event
336
341
  end
337
342
  end
338
343
 
@@ -365,9 +370,17 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
365
370
 
366
371
  # @param msg [JMS::MapMessage]
367
372
  # @return [LogStash::Event]
368
- def process_map_message(msg)
373
+ def process_map_message(msg, &event_handler)
369
374
  data = to_string_keyed_hash(msg.data)
370
- do_target_check_once_and_get_event_factory.new_event(data)
375
+ yield do_target_check_once_and_get_event_factory.new_event(data)
376
+ end
377
+
378
+ def process_string_message(msg, &event_handler)
379
+ text = msg.to_s # javax.jms.TextMessage#getText (e.g. JSON payload)
380
+ return event_factory.new_event if text.nil?
381
+
382
+ @codec.decode(text, &event_handler)
383
+ @codec.flush(&event_handler)
371
384
  end
372
385
 
373
386
  def do_target_check_once_and_get_event_factory
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-input-jms'
4
- s.version = '3.2.2'
4
+ s.version = '3.3.1'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Reads events from a Jms Broker"
7
7
  s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
@@ -32,5 +32,6 @@ Gem::Specification.new do |s|
32
32
  s.add_runtime_dependency "jruby-jms", ">= 1.2.0" #(Apache 2.0 license)
33
33
  s.add_runtime_dependency 'semantic_logger', '< 4.0.0'
34
34
 
35
+ s.add_development_dependency 'logstash-codec-line', '~> 3.0'
35
36
  s.add_development_dependency 'logstash-devutils'
36
37
  end
@@ -241,6 +241,19 @@ shared_examples_for "a JMS input" do
241
241
 
242
242
  end
243
243
  end
244
+
245
+ context 'when using a multi-event codec' do
246
+ let(:config) { super().merge('codec' => 'line') }
247
+ let(:message) { 'one' + "\n" + 'two' + "\n" + 'three' }
248
+ it 'emits multiple events' do
249
+ send_message do |session|
250
+ session.message(message)
251
+ end
252
+ expect(queue.size).to eql 3
253
+ expect(queue.map { |e| e.get('message') }).to contain_exactly("one", "two", "three")
254
+ expect(queue).to all(have_header_value("jms_destination", destination))
255
+ end
256
+ end
244
257
  end
245
258
 
246
259
  context 'when the message is map message', :ecs_compatibility_support do
@@ -291,7 +291,7 @@ describe LogStash::Inputs::Jms do
291
291
  allow_any_instance_of(described_class).to receive(:ecs_compatibility).and_return(ecs_compatibility)
292
292
 
293
293
  plugin.register
294
- plugin.queue_event(jms_message_double, queue = [])
294
+ plugin.queue_events(jms_message_double, queue = [])
295
295
  expect(queue.size).to eql 1
296
296
  @event = queue.first
297
297
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-jms
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.2
4
+ version: 3.3.1
5
5
  platform: java
6
6
  authors:
7
7
  - Elasticsearch
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2022-06-13 00:00:00.000000000 Z
10
+ date: 2025-09-08 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
13
+ name: logstash-core-plugin-api
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - ">="
@@ -19,9 +19,8 @@ dependencies:
19
19
  - - "<="
20
20
  - !ruby/object:Gem::Version
21
21
  version: '2.99'
22
- name: logstash-core-plugin-api
23
- prerelease: false
24
22
  type: :runtime
23
+ prerelease: false
25
24
  version_requirements: !ruby/object:Gem::Requirement
26
25
  requirements:
27
26
  - - ">="
@@ -31,112 +30,126 @@ dependencies:
31
30
  - !ruby/object:Gem::Version
32
31
  version: '2.99'
33
32
  - !ruby/object:Gem::Dependency
33
+ name: logstash-codec-json
34
34
  requirement: !ruby/object:Gem::Requirement
35
35
  requirements:
36
36
  - - "~>"
37
37
  - !ruby/object:Gem::Version
38
38
  version: '3.0'
39
- name: logstash-codec-json
40
- prerelease: false
41
39
  type: :runtime
40
+ prerelease: false
42
41
  version_requirements: !ruby/object:Gem::Requirement
43
42
  requirements:
44
43
  - - "~>"
45
44
  - !ruby/object:Gem::Version
46
45
  version: '3.0'
47
46
  - !ruby/object:Gem::Dependency
47
+ name: logstash-codec-plain
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  requirements:
50
50
  - - "~>"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '3.0'
53
- name: logstash-codec-plain
54
- prerelease: false
55
53
  type: :runtime
54
+ prerelease: false
56
55
  version_requirements: !ruby/object:Gem::Requirement
57
56
  requirements:
58
57
  - - "~>"
59
58
  - !ruby/object:Gem::Version
60
59
  version: '3.0'
61
60
  - !ruby/object:Gem::Dependency
61
+ name: logstash-mixin-ecs_compatibility_support
62
62
  requirement: !ruby/object:Gem::Requirement
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
66
  version: '1.3'
67
- name: logstash-mixin-ecs_compatibility_support
68
- prerelease: false
69
67
  type: :runtime
68
+ prerelease: false
70
69
  version_requirements: !ruby/object:Gem::Requirement
71
70
  requirements:
72
71
  - - "~>"
73
72
  - !ruby/object:Gem::Version
74
73
  version: '1.3'
75
74
  - !ruby/object:Gem::Dependency
75
+ name: logstash-mixin-event_support
76
76
  requirement: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - "~>"
79
79
  - !ruby/object:Gem::Version
80
80
  version: '1.0'
81
- name: logstash-mixin-event_support
82
- prerelease: false
83
81
  type: :runtime
82
+ prerelease: false
84
83
  version_requirements: !ruby/object:Gem::Requirement
85
84
  requirements:
86
85
  - - "~>"
87
86
  - !ruby/object:Gem::Version
88
87
  version: '1.0'
89
88
  - !ruby/object:Gem::Dependency
89
+ name: logstash-mixin-validator_support
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
94
  version: '1.0'
95
- name: logstash-mixin-validator_support
96
- prerelease: false
97
95
  type: :runtime
96
+ prerelease: false
98
97
  version_requirements: !ruby/object:Gem::Requirement
99
98
  requirements:
100
99
  - - "~>"
101
100
  - !ruby/object:Gem::Version
102
101
  version: '1.0'
103
102
  - !ruby/object:Gem::Dependency
103
+ name: jruby-jms
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - ">="
107
107
  - !ruby/object:Gem::Version
108
108
  version: 1.2.0
109
- name: jruby-jms
110
- prerelease: false
111
109
  type: :runtime
110
+ prerelease: false
112
111
  version_requirements: !ruby/object:Gem::Requirement
113
112
  requirements:
114
113
  - - ">="
115
114
  - !ruby/object:Gem::Version
116
115
  version: 1.2.0
117
116
  - !ruby/object:Gem::Dependency
117
+ name: semantic_logger
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
122
  version: 4.0.0
123
- name: semantic_logger
124
- prerelease: false
125
123
  type: :runtime
124
+ prerelease: false
126
125
  version_requirements: !ruby/object:Gem::Requirement
127
126
  requirements:
128
127
  - - "<"
129
128
  - !ruby/object:Gem::Version
130
129
  version: 4.0.0
131
130
  - !ruby/object:Gem::Dependency
131
+ name: logstash-codec-line
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '3.0'
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '3.0'
144
+ - !ruby/object:Gem::Dependency
145
+ name: logstash-devutils
132
146
  requirement: !ruby/object:Gem::Requirement
133
147
  requirements:
134
148
  - - ">="
135
149
  - !ruby/object:Gem::Version
136
150
  version: '0'
137
- name: logstash-devutils
138
- prerelease: false
139
151
  type: :development
152
+ prerelease: false
140
153
  version_requirements: !ruby/object:Gem::Requirement
141
154
  requirements:
142
155
  - - ">="
@@ -171,7 +184,6 @@ licenses:
171
184
  metadata:
172
185
  logstash_plugin: 'true'
173
186
  logstash_group: input
174
- post_install_message:
175
187
  rdoc_options: []
176
188
  require_paths:
177
189
  - lib
@@ -186,8 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
198
  - !ruby/object:Gem::Version
187
199
  version: '0'
188
200
  requirements: []
189
- rubygems_version: 3.1.6
190
- signing_key:
201
+ rubygems_version: 3.6.3
191
202
  specification_version: 4
192
203
  summary: Reads events from a Jms Broker
193
204
  test_files: