jruby-jms 1.1.0-java → 1.2.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/HISTORY.md +24 -7
- data/README.md +49 -49
- data/Rakefile +17 -12
- data/lib/jms.rb +8 -17
- data/lib/jms/bytes_message.rb +3 -19
- data/lib/jms/connection.rb +63 -83
- data/lib/jms/map_message.rb +9 -25
- data/lib/jms/message.rb +22 -173
- data/lib/jms/message_consumer.rb +23 -35
- data/lib/jms/message_listener_impl.rb +22 -38
- data/lib/jms/message_producer.rb +9 -25
- data/lib/jms/mq_workaround.rb +11 -26
- data/lib/jms/object_message.rb +1 -17
- data/lib/jms/oracle_a_q_connection_factory.rb +4 -21
- data/lib/jms/queue_browser.rb +2 -18
- data/lib/jms/session.rb +92 -106
- data/lib/jms/session_pool.rb +34 -41
- data/lib/jms/text_message.rb +0 -16
- data/lib/jms/version.rb +1 -1
- data/test/connection_test.rb +35 -81
- data/test/jms.yml +18 -8
- data/test/message_test.rb +27 -43
- data/test/session_pool_test.rb +30 -46
- data/test/session_test.rb +30 -45
- data/test/test_helper.rb +33 -0
- metadata +20 -26
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -36
- data/examples/advanced/session_pool.rb +0 -37
- data/examples/client-server/replier.rb +0 -29
- data/examples/client-server/requestor.rb +0 -40
- data/examples/file-to-q/files_to_q.rb +0 -51
- data/examples/file-to-q/q_to_files.rb +0 -44
- data/examples/invm/invm.rb +0 -44
- data/examples/invm/log4j.properties +0 -58
- data/examples/jms.yml +0 -149
- data/examples/performance/consumer.rb +0 -25
- data/examples/performance/producer.rb +0 -31
- data/examples/producer-consumer/browser.rb +0 -24
- data/examples/producer-consumer/consumer.rb +0 -24
- data/examples/producer-consumer/consumer_async.rb +0 -41
- data/examples/producer-consumer/producer.rb +0 -25
- data/examples/publish-subscribe/publish.rb +0 -24
- data/examples/publish-subscribe/subscribe.rb +0 -31
- data/lib/jms/logging.rb +0 -50
- data/nbproject/private/private.properties +0 -3
- data/nbproject/private/rake-d.txt +0 -5
- data/parallel_minion.gemspec +0 -21
data/lib/jms/message_producer.rb
CHANGED
@@ -1,19 +1,3 @@
|
|
1
|
-
################################################################################
|
2
|
-
# Copyright 2008, 2009, 2010, 2011 J. Reid Morrison
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
################################################################################
|
16
|
-
|
17
1
|
# Extend JMS Message Producer Interface with Ruby methods
|
18
2
|
#
|
19
3
|
# For further help on javax.jms.MessageProducer
|
@@ -45,15 +29,15 @@ module JMS::MessageProducer
|
|
45
29
|
# Example:
|
46
30
|
# producer.delivery_mode_sym = :persistent
|
47
31
|
def delivery_mode_sym=(mode)
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
32
|
+
self.delivery_mode =
|
33
|
+
case mode
|
34
|
+
when :persistent
|
35
|
+
JMS::DeliveryMode::PERSISTENT
|
36
|
+
when :non_persistent
|
37
|
+
JMS::DeliveryMode::NON_PERSISTENT
|
38
|
+
else
|
39
|
+
raise "Unknown delivery mode symbol: #{mode}"
|
40
|
+
end
|
57
41
|
end
|
58
42
|
|
59
43
|
end
|
data/lib/jms/mq_workaround.rb
CHANGED
@@ -1,68 +1,53 @@
|
|
1
1
|
# Workaround for IBM MQ JMS implementation that implements some undocumented methods
|
2
|
-
|
3
2
|
begin
|
4
|
-
|
5
3
|
class com.ibm.mq.jms::MQQueueSession
|
6
|
-
|
7
|
-
if self.instance_methods.include? "consume"
|
4
|
+
if self.method_defined?(:consume)
|
8
5
|
def consume(params, &proc)
|
9
6
|
Java::JavaxJms::Session.instance_method(:consume).bind(self).call(params, &proc)
|
10
7
|
end
|
11
8
|
end
|
12
|
-
|
13
9
|
end
|
14
10
|
|
15
|
-
|
16
11
|
class com.ibm.mq.jms::MQSession
|
17
|
-
|
18
|
-
if self.instance_methods.include? "consume"
|
12
|
+
if self.method_defined?(:consume)
|
19
13
|
def consume(params, &proc)
|
20
14
|
Java::JavaxJms::Session.instance_method(:consume).bind(self).call(params, &proc)
|
21
15
|
end
|
22
16
|
end
|
23
|
-
|
24
|
-
if self.
|
17
|
+
|
18
|
+
if self.method_defined?(:create_destination)
|
25
19
|
def create_destination(params)
|
26
20
|
Java::JavaxJms::Session.instance_method(:create_destination).bind(self).call(params)
|
27
21
|
end
|
28
22
|
end
|
29
|
-
|
30
23
|
end
|
31
24
|
|
32
|
-
|
33
25
|
class com.ibm.mq.jms::MQQueueBrowser
|
34
|
-
|
35
|
-
if self.instance_methods.include? "each"
|
26
|
+
if self.method_defined?(:each)
|
36
27
|
def each(params, &proc)
|
37
28
|
Java::ComIbmMsgClientJms::JmsQueueBrowser.instance_method(:each).bind(self).call(params, &proc)
|
38
29
|
end
|
39
30
|
end
|
40
31
|
end
|
41
|
-
|
42
32
|
|
43
33
|
class com.ibm.mq.jms::MQQueueReceiver
|
44
|
-
|
45
|
-
if self.instance_methods.include? "each"
|
34
|
+
if self.method_defined?(:each)
|
46
35
|
def each(params, &proc)
|
47
36
|
Java::JavaxJms::MessageConsumer.instance_method(:each).bind(self).call(params, &proc)
|
48
37
|
end
|
49
38
|
end
|
50
|
-
|
51
|
-
if self.
|
39
|
+
|
40
|
+
if self.method_defined?(:get)
|
52
41
|
def get(params={})
|
53
42
|
Java::JavaxJms::MessageConsumer.instance_method(:get).bind(self).call(params)
|
54
43
|
end
|
55
44
|
end
|
56
|
-
|
57
45
|
end
|
58
|
-
|
59
|
-
|
46
|
+
|
60
47
|
class com.ibm.mq.jms::MQQueue
|
61
|
-
|
62
|
-
|
63
|
-
undef_method :delete
|
48
|
+
if self.method_defined?(:delete)
|
49
|
+
undef_method :delete
|
64
50
|
end
|
65
|
-
|
66
51
|
end
|
67
52
|
|
68
53
|
rescue NameError
|
data/lib/jms/object_message.rb
CHANGED
@@ -1,20 +1,4 @@
|
|
1
|
-
|
2
|
-
# Copyright 2008, 2009, 2010, 2011 J. Reid Morrison
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
################################################################################
|
16
|
-
|
17
|
-
#Interface javax.jms.ObjectMessage
|
1
|
+
# Interface javax.jms.ObjectMessage
|
18
2
|
module JMS::ObjectMessage
|
19
3
|
def data
|
20
4
|
getObject
|
@@ -1,19 +1,3 @@
|
|
1
|
-
################################################################################
|
2
|
-
# Copyright 2008, 2009, 2010, 2011 J. Reid Morrison
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
################################################################################
|
16
|
-
|
17
1
|
module JMS
|
18
2
|
# Full Qualified name causes a Java exception
|
19
3
|
java_import 'oracle.jms.AQjmsFactory'
|
@@ -21,19 +5,18 @@ module JMS
|
|
21
5
|
# Connection Factory to support Oracle AQ
|
22
6
|
class OracleAQConnectionFactory
|
23
7
|
attr_accessor :username, :url
|
24
|
-
|
25
|
-
attr_accessor :password
|
8
|
+
attr_writer :password
|
26
9
|
|
27
10
|
# Creates a connection per standard JMS 1.1 techniques from the Oracle AQ JMS Interface
|
28
11
|
def create_connection(*args)
|
29
|
-
|
30
|
-
|
12
|
+
# Since username and password are not assigned (see lib/jms/connection.rb:200)
|
13
|
+
# and connection_factory.create_connection expects 2 arguments when username is not null ...
|
31
14
|
if args.length == 2
|
32
15
|
@username = args[0]
|
33
16
|
@password = args[1]
|
34
17
|
end
|
35
18
|
|
36
|
-
|
19
|
+
# Full Qualified name causes a Java exception
|
37
20
|
#cf = oracle.jms.AQjmsFactory.getConnectionFactory(@url, java.util.Properties.new)
|
38
21
|
cf = AQjmsFactory.getConnectionFactory(@url, java.util.Properties.new)
|
39
22
|
|
data/lib/jms/queue_browser.rb
CHANGED
@@ -1,24 +1,8 @@
|
|
1
|
-
|
2
|
-
# Copyright 2008, 2009, 2010, 2011 J. Reid Morrison
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
################################################################################
|
16
|
-
|
17
|
-
#Interface javax.jms.QueueBrowser
|
1
|
+
# Interface javax.jms.QueueBrowser
|
18
2
|
module JMS::QueueBrowser
|
19
3
|
# For each message on the queue call the supplied Proc
|
20
4
|
def each(params={}, &block)
|
21
|
-
raise
|
5
|
+
raise(ArgumentError, 'JMS::QueueBrowser::each requires a code block to be executed for each message received') unless block
|
22
6
|
|
23
7
|
e = self.getEnumeration
|
24
8
|
while e.hasMoreElements
|
data/lib/jms/session.rb
CHANGED
@@ -1,19 +1,3 @@
|
|
1
|
-
################################################################################
|
2
|
-
# Copyright 2008, 2009, 2010, 2011 J. Reid Morrison
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
################################################################################
|
16
|
-
|
17
1
|
# For each thread that will be processing messages concurrently a separate
|
18
2
|
# session is required. All sessions can share a single connection to the same
|
19
3
|
# JMS Provider.
|
@@ -35,7 +19,7 @@
|
|
35
19
|
# See: Connection::consumer
|
36
20
|
#
|
37
21
|
# Example:
|
38
|
-
# destination = session.create_destination(:
|
22
|
+
# destination = session.create_destination(queue_name: "MyQueue")
|
39
23
|
# session.create_consumer(destination)
|
40
24
|
#
|
41
25
|
# create_consumer(destination, message_selector)
|
@@ -118,25 +102,26 @@ module JMS::Session
|
|
118
102
|
#
|
119
103
|
# If automated duck typing is not desired, the type of the message can be specified
|
120
104
|
# by setting the parameter 'type' to any one of:
|
121
|
-
# :
|
122
|
-
# :
|
123
|
-
# :
|
105
|
+
# text: Creates a Text Message
|
106
|
+
# map: Creates a Map Message
|
107
|
+
# bytes: Creates a Bytes Message
|
124
108
|
def message(data, type=nil)
|
125
109
|
jms_message = nil
|
126
|
-
type
|
127
|
-
:
|
128
|
-
|
129
|
-
:
|
130
|
-
|
131
|
-
|
132
|
-
|
110
|
+
type ||=
|
111
|
+
if data.respond_to?(:to_str, false)
|
112
|
+
:text
|
113
|
+
elsif data.respond_to?(:each_pair, false)
|
114
|
+
:map
|
115
|
+
else
|
116
|
+
raise "Unknown data type #{data.class.to_s} in Message"
|
117
|
+
end
|
133
118
|
|
134
119
|
case type
|
135
120
|
when :text
|
136
|
-
jms_message
|
121
|
+
jms_message = self.createTextMessage
|
137
122
|
jms_message.text = data.to_str
|
138
123
|
when :map
|
139
|
-
jms_message
|
124
|
+
jms_message = self.createMapMessage
|
140
125
|
jms_message.data = data
|
141
126
|
when :bytes
|
142
127
|
jms_message = self.createBytesMessage
|
@@ -160,19 +145,19 @@ module JMS::Session
|
|
160
145
|
# of deleting them for you
|
161
146
|
#
|
162
147
|
# To create a queue:
|
163
|
-
# session.create_destination(:
|
148
|
+
# session.create_destination(queue_name: 'name of queue')
|
164
149
|
#
|
165
150
|
# To create a temporary queue:
|
166
|
-
# session.create_destination(:
|
151
|
+
# session.create_destination(queue_name: :temporary)
|
167
152
|
#
|
168
153
|
# To create a queue:
|
169
154
|
# session.create_destination('queue://queue_name')
|
170
155
|
#
|
171
156
|
# To create a topic:
|
172
|
-
# session.create_destination(:
|
157
|
+
# session.create_destination(topic_name: 'name of queue')
|
173
158
|
#
|
174
159
|
# To create a temporary topic:
|
175
|
-
# session.create_destination(:
|
160
|
+
# session.create_destination(topic_name: :temporary)
|
176
161
|
#
|
177
162
|
# To create a topic:
|
178
163
|
# session.create_destination('topic://topic_name')
|
@@ -180,16 +165,15 @@ module JMS::Session
|
|
180
165
|
# Create the destination based on the parameter supplied
|
181
166
|
#
|
182
167
|
# Parameters:
|
183
|
-
# :
|
184
|
-
#
|
168
|
+
# queue_name: [String] Name of the Queue to return
|
169
|
+
# [Symbol] Create temporary queue
|
185
170
|
# Mandatory unless :topic_name is supplied
|
186
171
|
# Or,
|
187
|
-
# :
|
188
|
-
#
|
172
|
+
# topic_name: [String] Name of the Topic to write to or subscribe to
|
173
|
+
# [Symbol] Create temporary topic
|
189
174
|
# Mandatory unless :queue_name is supplied
|
190
175
|
# Or,
|
191
|
-
# :
|
192
|
-
#
|
176
|
+
# destination: [javaxJms::Destination] Destination to use
|
193
177
|
# Returns the result of the supplied block
|
194
178
|
def create_destination(params)
|
195
179
|
# Allow a Java JMS destination object to be passed in
|
@@ -207,7 +191,9 @@ module JMS::Session
|
|
207
191
|
topic_name = params[:topic_name]
|
208
192
|
end
|
209
193
|
|
210
|
-
|
194
|
+
unless queue_name || topic_name
|
195
|
+
raise(ArgumentError, 'Missing mandatory parameter :queue_name or :topic_name to Session::producer, Session::consumer, or Session::browser')
|
196
|
+
end
|
211
197
|
|
212
198
|
if queue_name
|
213
199
|
queue_name == :temporary ? create_temporary_queue : create_queue(queue_name)
|
@@ -219,36 +205,36 @@ module JMS::Session
|
|
219
205
|
# Create a queue or topic to send or receive messages from
|
220
206
|
#
|
221
207
|
# A block must be supplied so that if it is a temporary topic or queue
|
222
|
-
# it will be deleted after the
|
208
|
+
# it will be deleted after the block is complete
|
223
209
|
#
|
224
210
|
# To create a queue:
|
225
|
-
# session.destination(:
|
211
|
+
# session.destination(queue_name: 'name of queue')
|
226
212
|
#
|
227
213
|
# To create a temporary queue:
|
228
|
-
# session.destination(:
|
214
|
+
# session.destination(queue_name: :temporary)
|
229
215
|
#
|
230
216
|
# To create a topic:
|
231
|
-
# session.destination(:
|
217
|
+
# session.destination(topic_name: 'name of queue')
|
232
218
|
#
|
233
219
|
# To create a temporary topic:
|
234
|
-
# session.destination(:
|
220
|
+
# session.destination(topic_name: :temporary)
|
235
221
|
#
|
236
222
|
# Create the destination based on the parameter supplied
|
237
223
|
#
|
238
224
|
# Parameters:
|
239
|
-
# :
|
240
|
-
#
|
225
|
+
# queue_name: [String] Name of the Queue to return
|
226
|
+
# [Symbol] Create temporary queue
|
241
227
|
# Mandatory unless :topic_name is supplied
|
242
228
|
# Or,
|
243
|
-
# :
|
244
|
-
#
|
229
|
+
# topic_name: [String] Name of the Topic to write to or subscribe to
|
230
|
+
# [Symbol] Create temporary topic
|
245
231
|
# Mandatory unless :queue_name is supplied
|
246
232
|
# Or,
|
247
|
-
# :
|
233
|
+
# destination: [javaxJms::Destination] Destination to use
|
248
234
|
#
|
249
235
|
# Returns the result of the supplied block
|
250
236
|
def destination(params={}, &block)
|
251
|
-
raise
|
237
|
+
raise(ArgumentError, 'Missing mandatory Block when calling JMS::Session#destination') unless block
|
252
238
|
dest = nil
|
253
239
|
begin
|
254
240
|
dest = create_destination(params)
|
@@ -287,9 +273,9 @@ module JMS::Session
|
|
287
273
|
|
288
274
|
# Return the topic matching the topic name supplied
|
289
275
|
# Call the Proc if supplied
|
290
|
-
def topic(topic_name, &
|
276
|
+
def topic(topic_name, &block)
|
291
277
|
t = create_topic(topic_name)
|
292
|
-
|
278
|
+
block.call(t) if block
|
293
279
|
t
|
294
280
|
end
|
295
281
|
|
@@ -317,20 +303,20 @@ module JMS::Session
|
|
317
303
|
# Call the Proc if supplied, then automatically close the producer
|
318
304
|
#
|
319
305
|
# Parameters:
|
320
|
-
# :
|
321
|
-
#
|
306
|
+
# queue_name: [String] Name of the Queue to return
|
307
|
+
# [Symbol] Create temporary queue
|
322
308
|
# Mandatory unless :topic_name is supplied
|
323
309
|
# Or,
|
324
|
-
# :
|
325
|
-
#
|
310
|
+
# topic_name: [String] Name of the Topic to write to or subscribe to
|
311
|
+
# [Symbol] Create temporary topic
|
326
312
|
# Mandatory unless :queue_name is supplied
|
327
313
|
# Or,
|
328
|
-
# :
|
329
|
-
def producer(params, &
|
314
|
+
# destination: [javaxJms::Destination] Destination to use
|
315
|
+
def producer(params, &block)
|
330
316
|
p = self.create_producer(self.create_destination(params))
|
331
|
-
if
|
317
|
+
if block
|
332
318
|
begin
|
333
|
-
|
319
|
+
block.call(p)
|
334
320
|
ensure
|
335
321
|
p.close
|
336
322
|
p = nil
|
@@ -342,38 +328,38 @@ module JMS::Session
|
|
342
328
|
# Return a consumer for the destination
|
343
329
|
# A consumer can read messages from the queue or topic
|
344
330
|
#
|
345
|
-
# Call the
|
331
|
+
# Call the block if supplied, then automatically close the consumer
|
346
332
|
#
|
347
333
|
# Parameters:
|
348
|
-
# :
|
349
|
-
#
|
334
|
+
# queue_name: [String] Name of the Queue to return
|
335
|
+
# [Symbol] Create temporary queue
|
350
336
|
# Mandatory unless :topic_name is supplied
|
351
337
|
# Or,
|
352
|
-
# :
|
353
|
-
#
|
338
|
+
# topic_name: [String] Name of the Topic to write to or subscribe to
|
339
|
+
# [Symbol] Create temporary topic
|
354
340
|
# Mandatory unless :queue_name is supplied
|
355
341
|
# Or,
|
356
|
-
# :
|
342
|
+
# destination: [javaxJms::Destination] Destination to use
|
357
343
|
#
|
358
|
-
# :
|
344
|
+
# selector: Filter which messages should be returned from the queue
|
359
345
|
# Default: All messages
|
360
|
-
# :
|
346
|
+
# no_local: Determine whether messages published by its own connection
|
361
347
|
# should be delivered to it
|
362
348
|
# Default: false
|
363
|
-
def consumer(params, &
|
349
|
+
def consumer(params, &block)
|
364
350
|
destination = create_destination(params)
|
365
|
-
c
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
351
|
+
c =
|
352
|
+
if params[:no_local]
|
353
|
+
create_consumer(destination, params[:selector] || '', params[:no_local])
|
354
|
+
elsif params[:selector]
|
355
|
+
create_consumer(destination, params[:selector])
|
356
|
+
else
|
357
|
+
create_consumer(destination)
|
358
|
+
end
|
373
359
|
|
374
|
-
if
|
360
|
+
if block
|
375
361
|
begin
|
376
|
-
|
362
|
+
block.call(c)
|
377
363
|
ensure
|
378
364
|
c.close
|
379
365
|
c = nil
|
@@ -386,19 +372,19 @@ module JMS::Session
|
|
386
372
|
# A consumer can read messages from the queue or topic
|
387
373
|
#
|
388
374
|
# Parameters:
|
389
|
-
# :
|
390
|
-
#
|
375
|
+
# queue_name: [String] Name of the Queue to return
|
376
|
+
# [Symbol] Create temporary queue
|
391
377
|
# Mandatory unless :topic_name is supplied
|
392
378
|
# Or,
|
393
|
-
# :
|
394
|
-
#
|
379
|
+
# topic_name: [String] Name of the Topic to write to or subscribe to
|
380
|
+
# [Symbol] Create temporary topic
|
395
381
|
# Mandatory unless :queue_name is supplied
|
396
382
|
# Or,
|
397
|
-
# :
|
383
|
+
# destination: [javaxJms::Destination] Destination to use
|
398
384
|
#
|
399
|
-
# :
|
385
|
+
# selector: Filter which messages should be returned from the queue
|
400
386
|
# Default: All messages
|
401
|
-
# :
|
387
|
+
# no_local: Determine whether messages published by its own connection
|
402
388
|
# should be delivered to it
|
403
389
|
# Default: false
|
404
390
|
#
|
@@ -410,12 +396,12 @@ module JMS::Session
|
|
410
396
|
# in the time interval specified
|
411
397
|
# Default: 0
|
412
398
|
#
|
413
|
-
def consume(params, &
|
414
|
-
c = self.consumer(params)
|
399
|
+
def consume(params, &block)
|
415
400
|
begin
|
416
|
-
c.
|
401
|
+
c = self.consumer(params)
|
402
|
+
c.each(params, &block)
|
417
403
|
ensure
|
418
|
-
c.close
|
404
|
+
c.close if c
|
419
405
|
end
|
420
406
|
end
|
421
407
|
|
@@ -426,28 +412,28 @@ module JMS::Session
|
|
426
412
|
# Call the Proc if supplied, then automatically close the consumer
|
427
413
|
#
|
428
414
|
# Parameters:
|
429
|
-
# :
|
430
|
-
#
|
415
|
+
# queue_name: [String] Name of the Queue to return
|
416
|
+
# [Symbol] Create temporary queue
|
431
417
|
# Mandatory unless :topic_name is supplied
|
432
418
|
# Or,
|
433
|
-
# :
|
419
|
+
# destination: [javaxJms::Destination] Destination to use
|
434
420
|
#
|
435
|
-
# :
|
421
|
+
# selector: Filter which messages should be returned from the queue
|
436
422
|
# Default: All messages
|
437
|
-
def browser(params, &
|
438
|
-
raise
|
423
|
+
def browser(params, &block)
|
424
|
+
raise(ArgumentError, 'Session::browser requires a code block to be executed') unless block
|
439
425
|
|
440
426
|
destination = create_destination(params)
|
441
|
-
b
|
427
|
+
b = nil
|
442
428
|
if params[:selector]
|
443
429
|
b = create_browser(destination, params[:selector])
|
444
430
|
else
|
445
431
|
b = create_browser(destination)
|
446
432
|
end
|
447
433
|
|
448
|
-
if
|
434
|
+
if block
|
449
435
|
begin
|
450
|
-
|
436
|
+
block.call(b)
|
451
437
|
ensure
|
452
438
|
b.close
|
453
439
|
b = nil
|
@@ -459,15 +445,15 @@ module JMS::Session
|
|
459
445
|
# Browse the specified queue, calling the Proc supplied for each message found
|
460
446
|
#
|
461
447
|
# Parameters:
|
462
|
-
# :
|
463
|
-
#
|
448
|
+
# queue_name: [String] Name of the Queue to return
|
449
|
+
# [Symbol] Create temporary queue
|
464
450
|
# Mandatory unless :topic_name is supplied
|
465
451
|
# Or,
|
466
|
-
# :
|
452
|
+
# destination: [javaxJms::Destination] Destination to use
|
467
453
|
#
|
468
|
-
# :
|
454
|
+
# selector: Filter which messages should be returned from the queue
|
469
455
|
# Default: All messages
|
470
|
-
def browse(params={}, &
|
471
|
-
self.browser(params) {|b| b.each(params, &
|
456
|
+
def browse(params={}, &block)
|
457
|
+
self.browser(params) { |b| b.each(params, &block) }
|
472
458
|
end
|
473
459
|
end
|