logstash-input-jms 3.2.2-java → 3.3.0-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 +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/logstash/inputs/jms.rb +32 -20
- data/logstash-input-jms.gemspec +2 -1
- data/spec/inputs/integration/jms_spec.rb +13 -0
- data/spec/inputs/unit/jms_spec.rb +1 -1
- metadata +26 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7e8a70badadf706c39ae7c2c1d91b40be697abba13ec8abe80d7e6a19e355af
|
4
|
+
data.tar.gz: 106b0f7af45b2426d6bb8ab3b927699145a8b958ba3ad4ace3cd204061e75199
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26c0fee3a16983338c36071c8cd0007501f5a26284287bbd3d39da000ad651758a97067647bdb0ce00977358b5ac8b4fe61cdb60e46a93a733e61640c5b5ed62
|
7
|
+
data.tar.gz: e93a57c7fb6d4ec2560aed0443821dfe803d93d4e3964437c937765c0a623477a00c2c75ae7777d90c784b5832a2a2a3802d8fec0485de618def9c1dd682cefb
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
## 3.3.0
|
2
|
+
- Added support for decoding multiple events from text or binary messages when using a codec that produces multiple events
|
3
|
+
|
1
4
|
## 3.2.2
|
2
5
|
- Fix: Remove usage of `java_kind_of?` to allow this plugin to be supported for versions of Logstash using jruby-9.3.x
|
3
6
|
[#54](https://github.com/logstash-plugins/logstash-input-jms/pull/54)
|
data/lib/logstash/inputs/jms.rb
CHANGED
@@ -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
|
-
|
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
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
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
|
-
|
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))
|
@@ -327,12 +334,9 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
|
|
327
334
|
@properties_setter.call(event, properties)
|
328
335
|
end
|
329
336
|
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
rescue => e # parse or event creation error
|
334
|
-
@logger.error("Failed to create event", :message => msg, :exception => e,
|
335
|
-
:backtrace => e.backtrace)
|
337
|
+
event
|
338
|
+
end.each do |ready_event|
|
339
|
+
output_queue << ready_event
|
336
340
|
end
|
337
341
|
end
|
338
342
|
|
@@ -365,9 +369,17 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
|
|
365
369
|
|
366
370
|
# @param msg [JMS::MapMessage]
|
367
371
|
# @return [LogStash::Event]
|
368
|
-
def process_map_message(msg)
|
372
|
+
def process_map_message(msg, &event_handler)
|
369
373
|
data = to_string_keyed_hash(msg.data)
|
370
|
-
do_target_check_once_and_get_event_factory.new_event(data)
|
374
|
+
yield do_target_check_once_and_get_event_factory.new_event(data)
|
375
|
+
end
|
376
|
+
|
377
|
+
def process_string_message(msg, &event_handler)
|
378
|
+
text = msg.to_s # javax.jms.TextMessage#getText (e.g. JSON payload)
|
379
|
+
return event_factory.new_event if text.nil?
|
380
|
+
|
381
|
+
@codec.decode(text, &event_handler)
|
382
|
+
@codec.flush(&event_handler)
|
371
383
|
end
|
372
384
|
|
373
385
|
def do_target_check_once_and_get_event_factory
|
data/logstash-input-jms.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-input-jms'
|
4
|
-
s.version = '3.
|
4
|
+
s.version = '3.3.0'
|
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.
|
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,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-jms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elasticsearch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -20,8 +20,8 @@ dependencies:
|
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '2.99'
|
22
22
|
name: logstash-core-plugin-api
|
23
|
-
prerelease: false
|
24
23
|
type: :runtime
|
24
|
+
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
@@ -37,8 +37,8 @@ dependencies:
|
|
37
37
|
- !ruby/object:Gem::Version
|
38
38
|
version: '3.0'
|
39
39
|
name: logstash-codec-json
|
40
|
-
prerelease: false
|
41
40
|
type: :runtime
|
41
|
+
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
@@ -51,8 +51,8 @@ dependencies:
|
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '3.0'
|
53
53
|
name: logstash-codec-plain
|
54
|
-
prerelease: false
|
55
54
|
type: :runtime
|
55
|
+
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
@@ -65,8 +65,8 @@ dependencies:
|
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: '1.3'
|
67
67
|
name: logstash-mixin-ecs_compatibility_support
|
68
|
-
prerelease: false
|
69
68
|
type: :runtime
|
69
|
+
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
@@ -79,8 +79,8 @@ dependencies:
|
|
79
79
|
- !ruby/object:Gem::Version
|
80
80
|
version: '1.0'
|
81
81
|
name: logstash-mixin-event_support
|
82
|
-
prerelease: false
|
83
82
|
type: :runtime
|
83
|
+
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
@@ -93,8 +93,8 @@ dependencies:
|
|
93
93
|
- !ruby/object:Gem::Version
|
94
94
|
version: '1.0'
|
95
95
|
name: logstash-mixin-validator_support
|
96
|
-
prerelease: false
|
97
96
|
type: :runtime
|
97
|
+
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
@@ -107,8 +107,8 @@ dependencies:
|
|
107
107
|
- !ruby/object:Gem::Version
|
108
108
|
version: 1.2.0
|
109
109
|
name: jruby-jms
|
110
|
-
prerelease: false
|
111
110
|
type: :runtime
|
111
|
+
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - ">="
|
@@ -121,13 +121,27 @@ dependencies:
|
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: 4.0.0
|
123
123
|
name: semantic_logger
|
124
|
-
prerelease: false
|
125
124
|
type: :runtime
|
125
|
+
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
128
|
- - "<"
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: 4.0.0
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
requirement: !ruby/object:Gem::Requirement
|
133
|
+
requirements:
|
134
|
+
- - "~>"
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '3.0'
|
137
|
+
name: logstash-codec-line
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - "~>"
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '3.0'
|
131
145
|
- !ruby/object:Gem::Dependency
|
132
146
|
requirement: !ruby/object:Gem::Requirement
|
133
147
|
requirements:
|
@@ -135,8 +149,8 @@ dependencies:
|
|
135
149
|
- !ruby/object:Gem::Version
|
136
150
|
version: '0'
|
137
151
|
name: logstash-devutils
|
138
|
-
prerelease: false
|
139
152
|
type: :development
|
153
|
+
prerelease: false
|
140
154
|
version_requirements: !ruby/object:Gem::Requirement
|
141
155
|
requirements:
|
142
156
|
- - ">="
|
@@ -186,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
200
|
- !ruby/object:Gem::Version
|
187
201
|
version: '0'
|
188
202
|
requirements: []
|
189
|
-
rubygems_version: 3.
|
203
|
+
rubygems_version: 3.3.26
|
190
204
|
signing_key:
|
191
205
|
specification_version: 4
|
192
206
|
summary: Reads events from a Jms Broker
|