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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/logstash/inputs/jms.rb +32 -19
- 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 +35 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 439f29fea2225b00c4b170feec416693450ec6536ce14d7b4e78c67c71865b9c
|
4
|
+
data.tar.gz: 8c1eec0ab93ac8ac3c7800cd276ea4241eb509a8e5a581a7b55cc352bc99bc2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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)
|
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))
|
@@ -328,11 +335,9 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
|
|
328
335
|
end
|
329
336
|
|
330
337
|
decorate(event)
|
331
|
-
|
332
|
-
|
333
|
-
|
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
|
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.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.
|
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.
|
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:
|
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.
|
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:
|