logstash-input-jms 3.2.0-java → 3.2.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 +5 -0
- data/lib/logstash/inputs/jms.rb +26 -4
- data/logstash-input-jms.gemspec +1 -1
- data/spec/inputs/integration/jms_spec.rb +19 -19
- data/spec/inputs/spec_helper.rb +37 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dca4ef438036be47078b2db808c88cfd09206a952c793a235cb46ef655067c8
|
4
|
+
data.tar.gz: 1f8e6bd65539c095a4d78488121a08eaee5d5bd24c6eb1f67e35b070550638ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49c794f7452a575a8ce57e168f862e945bb2d57193daca9ff5ac4767b2f9eed39045d5fbed3a8b735fb3c050848d48a8fe2b57febf7a34c19baf9820664c71f3
|
7
|
+
data.tar.gz: 707f05788271a99e6e4eff3555285fa4120e3f6e2b1251ed63ddfbce1e38a2e1a821e59df549f3ac912bc4e221fa6776a320f286e6f8ef8b4f070aa4fed59669
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## 3.2.1
|
2
|
+
- Fix: improve compatibility with MessageConsumer implementations [#51](https://github.com/logstash-plugins/logstash-input-jms/pull/51),
|
3
|
+
such as IBM MQ.
|
4
|
+
- Test: Fix test failures due to ECS compatibility default changes in `8.x` of logstash [#53](https://github.com/logstash-plugins/logstash-input-jms/pull/53)
|
5
|
+
|
1
6
|
## 3.2.0
|
2
7
|
- Feat: event_factory support + targets to aid ECS [#49](https://github.com/logstash-plugins/logstash-input-jms/pull/49)
|
3
8
|
- Fix: when configured to add JMS headers to the event, headers whose value is not set no longer result in nil entries on the event
|
data/lib/logstash/inputs/jms.rb
CHANGED
@@ -84,7 +84,7 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
|
|
84
84
|
# If pub-sub (topic) style should be used.
|
85
85
|
config :pub_sub, :validate => :boolean, :default => false
|
86
86
|
|
87
|
-
# Durable
|
87
|
+
# Durable message_consumer settings.
|
88
88
|
# By default the `durable_subscriber_name` will be set to the topic, and `durable_subscriber_client_id` will be set
|
89
89
|
# to 'Logstash'
|
90
90
|
config :durable_subscriber, :validate => :boolean, :default => false
|
@@ -273,9 +273,9 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
|
|
273
273
|
params = {:timeout => @timeout * 1000, :selector => @selector}
|
274
274
|
subscriber = subscriber(session, params)
|
275
275
|
until stop?
|
276
|
-
#
|
277
|
-
# first
|
278
|
-
subscriber
|
276
|
+
# read from the queue/topic until :timeout is reached, or a message is available
|
277
|
+
# (whichever comes first)
|
278
|
+
do_receive_message(subscriber, timeout: @interval * 1000) do |message|
|
279
279
|
queue_event(message, output_queue)
|
280
280
|
break if stop?
|
281
281
|
end
|
@@ -336,6 +336,28 @@ class LogStash::Inputs::Jms < LogStash::Inputs::Threadable
|
|
336
336
|
end
|
337
337
|
end
|
338
338
|
|
339
|
+
# Loop through messages received and yield them.
|
340
|
+
#
|
341
|
+
# NOTE: a simplified replacement for JMS::MessageConsumer#each and #get (extensions).
|
342
|
+
#
|
343
|
+
# @param message_consumer [javax.jms.MessageConsumer]
|
344
|
+
# @param timeout in milliseconds
|
345
|
+
def do_receive_message(message_consumer, timeout: 0)
|
346
|
+
# Receive messages according to timeout
|
347
|
+
while true
|
348
|
+
case timeout
|
349
|
+
when 0 # Return immediately if no message is available
|
350
|
+
message = message_consumer.receiveNoWait()
|
351
|
+
when -1 # Wait forever
|
352
|
+
message = message_consumer.receive()
|
353
|
+
else # Wait for x milli-seconds for a message to be received from the broker
|
354
|
+
message = message_consumer.receive(timeout)
|
355
|
+
end
|
356
|
+
break unless message
|
357
|
+
yield message
|
358
|
+
end
|
359
|
+
end
|
360
|
+
|
339
361
|
def to_string_keyed_hash(hash)
|
340
362
|
hash.inject({}) { |h, (key, val)| h[key.to_s] = val; h }
|
341
363
|
end
|
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.2.
|
4
|
+
s.version = '3.2.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"
|
@@ -23,11 +23,11 @@ shared_examples_for "a JMS input" do
|
|
23
23
|
msg
|
24
24
|
end
|
25
25
|
expect(queue.first.get('message')).to eql(message)
|
26
|
-
expect(queue.first.
|
27
|
-
expect(queue.first.
|
28
|
-
expect(queue.first.
|
29
|
-
expect(queue.first.
|
30
|
-
expect(queue.first.
|
26
|
+
expect(queue.first).to have_header('jms_destination')
|
27
|
+
expect(queue.first).to have_header('jms_timestamp')
|
28
|
+
expect(queue.first).not_to have_property('this')
|
29
|
+
expect(queue.first).not_to have_property('this')
|
30
|
+
expect(queue.first).to have_property_value('the_other', 'the_other_prop')
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -45,8 +45,8 @@ shared_examples_for "a JMS input" do
|
|
45
45
|
msg
|
46
46
|
end
|
47
47
|
expect(queue.first.get('message')).to eql(message)
|
48
|
-
expect(queue.first.
|
49
|
-
expect(queue.first.
|
48
|
+
expect(queue.first).to have_property_value('this', 4)
|
49
|
+
expect(queue.first).to have_property_value('that', 'that_prop')
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'does not process messages that do not conform to the message selector' do
|
@@ -71,8 +71,8 @@ shared_examples_for "a JMS input" do
|
|
71
71
|
msg
|
72
72
|
end
|
73
73
|
expect(queue.first.get('message')).to eql(message)
|
74
|
-
expect(queue.first.
|
75
|
-
expect(queue.first.
|
74
|
+
expect(queue.first).to have_property_value('this', 3)
|
75
|
+
expect(queue.first).to have_property_value('that', 'that_prop')
|
76
76
|
end
|
77
77
|
|
78
78
|
it 'does not process messages that do not conform to the message selector' do
|
@@ -97,8 +97,8 @@ shared_examples_for "a JMS input" do
|
|
97
97
|
msg
|
98
98
|
end
|
99
99
|
expect(queue.first.get('message')).to eql(message)
|
100
|
-
expect(queue.first
|
101
|
-
expect(queue.first.
|
100
|
+
expect(get_property_value(queue.first, 'this')).to be_within(0.001).of(3.1)
|
101
|
+
expect(queue.first).to have_property_value('that', 'that_prop')
|
102
102
|
end
|
103
103
|
|
104
104
|
it 'does not process messages that do not conform to the message selector' do
|
@@ -124,8 +124,8 @@ shared_examples_for "a JMS input" do
|
|
124
124
|
msg
|
125
125
|
end
|
126
126
|
expect(queue.first.get('message')).to eql(message)
|
127
|
-
expect(queue.first.
|
128
|
-
expect(queue.first.
|
127
|
+
expect(queue.first).to have_property_value('this', 'this_prop')
|
128
|
+
expect(queue.first).to have_property_value('that', 'that_prop')
|
129
129
|
end
|
130
130
|
|
131
131
|
it 'does not process messages that do not conform to the message selector' do
|
@@ -154,11 +154,11 @@ shared_examples_for "a JMS input" do
|
|
154
154
|
msg
|
155
155
|
end
|
156
156
|
expect(queue.first.get('message')).to eql(message)
|
157
|
-
expect(queue.first.
|
158
|
-
expect(queue.first.
|
159
|
-
expect(queue.first.
|
160
|
-
expect(queue.first.
|
161
|
-
expect(queue.first.
|
157
|
+
expect(queue.first).not_to have_header('jms_destination')
|
158
|
+
expect(queue.first).to have_header('jms_timestamp')
|
159
|
+
expect(queue.first).to have_property_value('this', 'this_prop')
|
160
|
+
expect(queue.first).to have_property_value('that', 'that_prop')
|
161
|
+
expect(queue.first).to have_property_value('the_other', 'the_other_prop')
|
162
162
|
end
|
163
163
|
end
|
164
164
|
|
@@ -293,7 +293,7 @@ shared_examples_for "a JMS input" do
|
|
293
293
|
end
|
294
294
|
expect(queue.size).to eql 1
|
295
295
|
expect(queue.first.get('message')).to eql 'hello world'
|
296
|
-
expect(queue.first.
|
296
|
+
expect(queue.first).to have_header_value("jms_destination", destination)
|
297
297
|
end
|
298
298
|
end
|
299
299
|
end
|
data/spec/inputs/spec_helper.rb
CHANGED
@@ -32,6 +32,42 @@ def send_message(&block)
|
|
32
32
|
end
|
33
33
|
input.run(queue)
|
34
34
|
|
35
|
-
destination = "#{pub_sub ? 'topic' : 'queue'}://#{queue_name}"
|
36
35
|
tt.join(3)
|
37
36
|
end
|
37
|
+
|
38
|
+
|
39
|
+
def get_value(type, actual, name)
|
40
|
+
actual.get(name) || actual.get("[@metadata][input][jms][#{type}][#{name}]")
|
41
|
+
end
|
42
|
+
|
43
|
+
def get_header_value(actual, name)
|
44
|
+
get_value('headers', actual, name)
|
45
|
+
end
|
46
|
+
|
47
|
+
def get_property_value(actual, name)
|
48
|
+
get_value('properties', actual, name)
|
49
|
+
end
|
50
|
+
|
51
|
+
RSpec::Matchers.define :have_header do |expected|
|
52
|
+
match do |actual|
|
53
|
+
get_header_value(actual, expected)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
RSpec::Matchers.define :have_property do |expected|
|
58
|
+
match do |actual|
|
59
|
+
get_property_value(actual, expected)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
RSpec::Matchers.define :have_header_value do |header, expected|
|
64
|
+
match do |actual|
|
65
|
+
expected == get_header_value(actual, header)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
RSpec::Matchers.define :have_property_value do |property, expected|
|
70
|
+
match do |actual|
|
71
|
+
expected == get_property_value(actual, property)
|
72
|
+
end
|
73
|
+
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.2.
|
4
|
+
version: 3.2.1
|
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: 2022-01-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|