jruby-jms 0.10.0 → 0.10.1

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.
data/HISTORY.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.10.1 (2011-02-21)
2
+
3
+ * Fix persistence typo and add message test cases
4
+
5
+ ## 0.10.0 (2011-02-10)
6
+
7
+ * Refactoring interface
8
+
1
9
  ## 0.9.0 (2011-01-23)
2
10
 
3
11
  * Revised API with cleaner interface
@@ -10,4 +18,4 @@
10
18
  ## 2008, 2009, 2010
11
19
 
12
20
  * Previously known as jms4jruby
13
- * Running in production at an enterprise processing a million messages a day
21
+ * Running in production at an enterprise processing a million messages a day
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ desc "Build gem"
9
9
  task :gem do |t|
10
10
  gemspec = Gem::Specification.new do |s|
11
11
  s.name = 'jruby-jms'
12
- s.version = '0.10.0'
12
+ s.version = '0.10.1'
13
13
  s.author = 'Reid Morrison'
14
14
  s.email = 'rubywmq@gmail.com'
15
15
  s.homepage = 'https://github.com/reidmorrison/jruby-jms'
@@ -17,7 +17,7 @@ config = YAML.load_file(File.join(File.dirname(__FILE__), 'jms.yml'))[jms_provid
17
17
  raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless config
18
18
 
19
19
  JMS::Connection.session(config) do |session|
20
- session.consume(:q_name => 'ExampleQueue', :timeout=>1000) do |message|
20
+ session.consume(:queue_name => 'ExampleQueue', :timeout=>1000) do |message|
21
21
  p message
22
22
  end
23
23
  end
@@ -17,7 +17,7 @@ config = YAML.load_file(File.join(File.dirname(__FILE__), '..', 'jms.yml'))[jms_
17
17
  raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless config
18
18
 
19
19
  JMS::Connection.session(config) do |session|
20
- session.consumer(:q_name => 'ExampleQueue') do |consumer|
20
+ session.consumer(:queue_name => 'ExampleQueue') do |consumer|
21
21
  stats = consumer.each(:statistics => true) do |message|
22
22
  puts "=================================="
23
23
  p message
@@ -20,7 +20,7 @@ raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless con
20
20
  JMS::Connection.session(config) do |session|
21
21
  start_time = Time.now
22
22
 
23
- session.producer(:q_name => 'ExampleQueue') do |producer|
23
+ session.producer(:queue_name => 'ExampleQueue') do |producer|
24
24
  count.times do |i|
25
25
  producer.send(session.message("Hello Producer #{i}"))
26
26
  end
@@ -17,7 +17,7 @@ config = YAML.load_file(File.join(File.dirname(__FILE__), 'jms.yml'))[jms_provid
17
17
  raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless config
18
18
 
19
19
  JMS::Connection.session(config) do |session|
20
- session.producer(:q_name => 'ExampleQueue') do |producer|
20
+ session.producer(:queue_name => 'ExampleQueue') do |producer|
21
21
  producer.send(session.message("Hello World"))
22
22
  end
23
23
  end
@@ -40,7 +40,7 @@ module JMS
40
40
  # :transport_type => com.ibm.mq.jms.JMSC::MQJMS_TP_CLIENT_MQ_TCPIP,
41
41
  # :username => 'mqm'
42
42
  # ) do |session|
43
- # session.consumer(:q_name=>'TEST', :mode=>:input) do |consumer|
43
+ # session.consumer(:queue_name=>'TEST', :mode=>:input) do |consumer|
44
44
  # if message = consumer.receive_no_wait
45
45
  # puts "Data Received: #{message.data}"
46
46
  # else
@@ -59,9 +59,9 @@ module JMS
59
59
  # call the supplied code block, then close the connection upon completion
60
60
  #
61
61
  # Returns the result of the supplied block
62
- def self.start(parms = {}, &proc)
62
+ def self.start(params = {}, &proc)
63
63
  raise "Missing mandatory Block when calling JMS::Connection.start" unless proc
64
- connection = Connection.new(parms)
64
+ connection = Connection.new(params)
65
65
  connection.start
66
66
  begin
67
67
  proc.call(connection)
@@ -77,9 +77,9 @@ module JMS
77
77
  # Useful when only a single session is required in the current thread
78
78
  #
79
79
  # Note: It is important that each thread have its own session to support transactions
80
- def self.session(parms = {}, &proc)
81
- self.start(parms) do |connection|
82
- connection.session(parms, &proc)
80
+ def self.session(params = {}, &proc)
81
+ self.start(params) do |connection|
82
+ connection.session(params, &proc)
83
83
  end
84
84
  end
85
85
 
@@ -287,9 +287,9 @@ module JMS
287
287
  # :options => any of the javax.jms.Session constants
288
288
  # Default: javax.jms.Session::AUTO_ACKNOWLEDGE
289
289
  #
290
- def session(parms={}, &proc)
290
+ def session(params={}, &proc)
291
291
  raise "Missing mandatory Block when calling JMS::Connection#session" unless proc
292
- session = self.create_session(parms)
292
+ session = self.create_session(params)
293
293
  begin
294
294
  proc.call(session)
295
295
  ensure
@@ -328,9 +328,9 @@ module JMS
328
328
  # session is transacted.
329
329
  # Default: javax.jms.Session::AUTO_ACKNOWLEDGE
330
330
  #
331
- def create_session(parms={})
332
- transacted = parms[:transacted] || false
333
- options = parms[:options] || javax.jms.Session::AUTO_ACKNOWLEDGE
331
+ def create_session(params={})
332
+ transacted = params[:transacted] || false
333
+ options = params[:options] || javax.jms.Session::AUTO_ACKNOWLEDGE
334
334
  @jms_connection.create_session(transacted, options)
335
335
  end
336
336
 
@@ -425,13 +425,13 @@ module JMS
425
425
  # Default: 1
426
426
  #
427
427
  # Consumer Parameters:
428
- # :q_name => String: Name of the Queue to return
428
+ # :queue_name => String: Name of the Queue to return
429
429
  # Symbol: :temporary => Create temporary queue
430
430
  # Mandatory unless :topic_name is supplied
431
431
  # Or,
432
432
  # :topic_name => String: Name of the Topic to write to or subscribe to
433
433
  # Symbol: :temporary => Create temporary topic
434
- # Mandatory unless :q_name is supplied
434
+ # Mandatory unless :queue_name is supplied
435
435
  # Or,
436
436
  # :destination=> Explicit javaxJms::Destination to use
437
437
  #
@@ -461,15 +461,15 @@ module JMS
461
461
  # Note: Also supply connection::on_exception so that connection failures can be handled
462
462
  #
463
463
  #
464
- def on_message(parms, &proc)
464
+ def on_message(params, &proc)
465
465
  raise "JMS::Connection must be connected prior to calling JMS::Connection::on_message" unless @sessions && @consumers
466
466
 
467
- consumer_count = parms[:session_count] || 1
467
+ consumer_count = params[:session_count] || 1
468
468
  consumer_count.times do
469
- session = self.create_session(parms)
470
- consumer = session.consumer(parms)
469
+ session = self.create_session(params)
470
+ consumer = session.consumer(params)
471
471
  if session.transacted?
472
- consumer.on_message(parms) do |message|
472
+ consumer.on_message(params) do |message|
473
473
  begin
474
474
  proc.call(message) ? session.commit : session.rollback
475
475
  rescue => exc
@@ -478,7 +478,7 @@ module JMS
478
478
  end
479
479
  end
480
480
  else
481
- consumer.on_message(parms, &proc)
481
+ consumer.on_message(params, &proc)
482
482
  end
483
483
  @consumers << consumer
484
484
  @sessions << session
@@ -57,15 +57,15 @@ module javax.jms::Message
57
57
  # Header Fields - Attributes of the message
58
58
 
59
59
  # Return the JMS Delivery Mode as a symbol
60
- # :peristent
61
- # :non_peristent
60
+ # :persistent
61
+ # :non_persistent
62
62
  # other: Value from javax.jms.DeliveryMode
63
63
  def jms_delivery_mode
64
64
  case getJMSDeliveryMode
65
65
  when javax.jms.DeliveryMode::PERSISTENT
66
- :peristent
66
+ :persistent
67
67
  when javax.jms.DeliveryMode::NON_PERSISTENT
68
- :non_peristent
68
+ :non_persistent
69
69
  else
70
70
  getJMSDeliveryMode
71
71
  end
@@ -73,14 +73,14 @@ module javax.jms::Message
73
73
 
74
74
  # Set the JMS Delivery Mode
75
75
  # Valid values for mode
76
- # :peristent
77
- # :non_peristent
76
+ # :persistent
77
+ # :non_persistent
78
78
  # other: Any constant from javax.jms.DeliveryMode
79
79
  def jms_delivery_mode=(mode)
80
80
  val = case mode
81
- when :peristent
81
+ when :persistent
82
82
  javax.jms.DeliveryMode::PERSISTENT
83
- when :non_peristent
83
+ when :non_persistent
84
84
  javax.jms.DeliveryMode::NON_PERSISTENT
85
85
  else
86
86
  mode
@@ -24,8 +24,8 @@ module javax.jms::MessageConsumer
24
24
  # Note: Messages may still be on the queue, but the broker has not supplied any messages
25
25
  # in the time interval specified
26
26
  # Default: 0
27
- def get(parms={})
28
- timeout = parms[:timeout] || 0
27
+ def get(params={})
28
+ timeout = params[:timeout] || 0
29
29
  if timeout == -1
30
30
  self.receive
31
31
  elsif timeout == 0
@@ -54,19 +54,19 @@ module javax.jms::MessageConsumer
54
54
  # with :statistics => true
55
55
  #
56
56
  # The statistics gathered are returned when :statistics => true and :async => false
57
- def each(parms={}, &proc)
57
+ def each(params={}, &proc)
58
58
  raise "Destination::each requires a code block to be executed for each message received" unless proc
59
59
 
60
60
  message_count = nil
61
61
  start_time = nil
62
62
 
63
- if parms[:statistics]
63
+ if params[:statistics]
64
64
  message_count = 0
65
65
  start_time = Time.now
66
66
  end
67
67
 
68
68
  # Receive messages according to timeout
69
- while message = self.get(parms) do
69
+ while message = self.get(params) do
70
70
  proc.call(message)
71
71
  message_count += 1 if message_count
72
72
  end
@@ -97,10 +97,10 @@ module javax.jms::MessageConsumer
97
97
  #
98
98
  # The statistics gathered are returned when :statistics => true and :async => false
99
99
  #
100
- def on_message(parms={}, &proc)
100
+ def on_message(params={}, &proc)
101
101
  raise "MessageConsumer::on_message requires a code block to be executed for each message received" unless proc
102
102
 
103
- @listener = JMS::MessageListener.new(parms,&proc)
103
+ @listener = JMS::MessageListener.new(params,&proc)
104
104
  self.setMessageListener @listener
105
105
  end
106
106
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  module javax.jms::QueueBrowser
18
18
  # For each message on the queue call the supplied Proc
19
- def each(parms={}, &proc)
19
+ def each(params={}, &proc)
20
20
  raise "javax.jms.QueueBrowser::each requires a code block to be executed for each message received" unless proc
21
21
 
22
22
  e = self.getEnumeration
@@ -161,19 +161,19 @@ module javax.jms::Session
161
161
  # Or,
162
162
  # :topic_name => String: Name of the Topic to write to or subscribe to
163
163
  # Symbol: :temporary => Create temporary topic
164
- # Mandatory unless :q_name is supplied
164
+ # Mandatory unless :queue_name is supplied
165
165
  # Or,
166
166
  # :destination=> Explicit javaxJms::Destination to use
167
167
  #
168
168
  # Returns the result of the supplied block
169
- def create_destination(parms)
169
+ def create_destination(params)
170
170
  # Allow a Java JMS destination object to be passed in
171
- return parms[:destination] if parms[:destination] && parms[:destination].java_kind_of?(javax.jms::Destination)
171
+ return params[:destination] if params[:destination] && params[:destination].java_kind_of?(javax.jms::Destination)
172
172
 
173
- # :q_name is deprecated
174
- queue_name = parms[:queue_name] || parms[:q_name]
175
- topic_name = parms[:topic_name]
176
- raise "Missing mandatory parameter :q_name or :topic_name to Session::producer, Session::consumer, or Session::browser" unless queue_name || topic_name
173
+ # :queue_name is deprecated
174
+ queue_name = params[:queue_name] || params[:queue_name]
175
+ topic_name = params[:topic_name]
176
+ raise "Missing mandatory parameter :queue_name or :topic_name to Session::producer, Session::consumer, or Session::browser" unless queue_name || topic_name
177
177
 
178
178
  if queue_name
179
179
  queue_name == :temporary ? create_temporary_queue : create_queue(queue_name)
@@ -208,16 +208,16 @@ module javax.jms::Session
208
208
  # Or,
209
209
  # :topic_name => String: Name of the Topic to write to or subscribe to
210
210
  # Symbol: :temporary => Create temporary topic
211
- # Mandatory unless :q_name is supplied
211
+ # Mandatory unless :queue_name is supplied
212
212
  # Or,
213
213
  # :destination=> Explicit javaxJms::Destination to use
214
214
  #
215
215
  # Returns the result of the supplied block
216
- def destination(parms={}, &block)
216
+ def destination(params={}, &block)
217
217
  raise "Missing mandatory Block when calling JMS::Session#destination" unless block
218
218
  dest = nil
219
219
  begin
220
- dest = create_destination(parms)
220
+ dest = create_destination(params)
221
221
  block.call(dest)
222
222
  ensure
223
223
  # Delete Temporary Queue / Topic
@@ -283,17 +283,17 @@ module javax.jms::Session
283
283
  # Call the Proc if supplied, then automatically close the producer
284
284
  #
285
285
  # Parameters:
286
- # :q_name => String: Name of the Queue to return
286
+ # :queue_name => String: Name of the Queue to return
287
287
  # Symbol: :temporary => Create temporary queue
288
288
  # Mandatory unless :topic_name is supplied
289
289
  # Or,
290
290
  # :topic_name => String: Name of the Topic to write to or subscribe to
291
291
  # Symbol: :temporary => Create temporary topic
292
- # Mandatory unless :q_name is supplied
292
+ # Mandatory unless :queue_name is supplied
293
293
  # Or,
294
294
  # :destination=> Explicit javax.jms::Destination to use
295
- def producer(parms, &proc)
296
- destination = create_destination(parms)
295
+ def producer(params, &proc)
296
+ destination = create_destination(params)
297
297
  # Call original java method with this destination
298
298
  #p = java_send :create_producer, [javax.jms::Destination], destination
299
299
  p = create_producer(destination)
@@ -314,13 +314,13 @@ module javax.jms::Session
314
314
  # Call the Proc if supplied, then automatically close the consumer
315
315
  #
316
316
  # Parameters:
317
- # :q_name => String: Name of the Queue to return
317
+ # :queue_name => String: Name of the Queue to return
318
318
  # Symbol: :temporary => Create temporary queue
319
319
  # Mandatory unless :topic_name is supplied
320
320
  # Or,
321
321
  # :topic_name => String: Name of the Topic to write to or subscribe to
322
322
  # Symbol: :temporary => Create temporary topic
323
- # Mandatory unless :q_name is supplied
323
+ # Mandatory unless :queue_name is supplied
324
324
  # Or,
325
325
  # :destination=> Explicit javaxJms::Destination to use
326
326
  #
@@ -329,13 +329,13 @@ module javax.jms::Session
329
329
  # :no_local => Determine whether messages published by its own connection
330
330
  # should be delivered to it
331
331
  # Default: false
332
- def consumer(parms, &proc)
333
- destination = create_destination(parms)
332
+ def consumer(params, &proc)
333
+ destination = create_destination(params)
334
334
  c = nil
335
- if parms[:no_local]
336
- c = create_consumer(destination, parms[:selector] || '', parms[:no_local])
337
- elsif parms[:selector]
338
- c = create_consumer(destination, parms[:selector])
335
+ if params[:no_local]
336
+ c = create_consumer(destination, params[:selector] || '', params[:no_local])
337
+ elsif params[:selector]
338
+ c = create_consumer(destination, params[:selector])
339
339
  else
340
340
  c = create_consumer(destination)
341
341
  end
@@ -355,13 +355,13 @@ module javax.jms::Session
355
355
  # A consumer can read messages from the queue or topic
356
356
  #
357
357
  # Parameters:
358
- # :q_name => String: Name of the Queue to return
358
+ # :queue_name => String: Name of the Queue to return
359
359
  # Symbol: :temporary => Create temporary queue
360
360
  # Mandatory unless :topic_name is supplied
361
361
  # Or,
362
362
  # :topic_name => String: Name of the Topic to write to or subscribe to
363
363
  # Symbol: :temporary => Create temporary topic
364
- # Mandatory unless :q_name is supplied
364
+ # Mandatory unless :queue_name is supplied
365
365
  # Or,
366
366
  # :destination=> Explicit javaxJms::Destination to use
367
367
  #
@@ -379,10 +379,10 @@ module javax.jms::Session
379
379
  # in the time interval specified
380
380
  # Default: 0
381
381
  #
382
- def consume(parms, &proc)
383
- c = self.consumer(parms)
382
+ def consume(params, &proc)
383
+ c = self.consumer(params)
384
384
  begin
385
- c.each(parms, &proc)
385
+ c.each(params, &proc)
386
386
  ensure
387
387
  c.close
388
388
  end
@@ -395,7 +395,7 @@ module javax.jms::Session
395
395
  # Call the Proc if supplied, then automatically close the consumer
396
396
  #
397
397
  # Parameters:
398
- # :q_name => String: Name of the Queue to return
398
+ # :queue_name => String: Name of the Queue to return
399
399
  # Symbol: :temporary => Create temporary queue
400
400
  # Mandatory unless :topic_name is supplied
401
401
  # Or,
@@ -403,13 +403,13 @@ module javax.jms::Session
403
403
  #
404
404
  # :selector => Filter which messages should be returned from the queue
405
405
  # Default: All messages
406
- def browser(parms, &proc)
406
+ def browser(params, &proc)
407
407
  raise "Session::browser requires a code block to be executed" unless proc
408
408
 
409
- destination = create_destination(parms)
409
+ destination = create_destination(params)
410
410
  b = nil
411
- if parms[:selector]
412
- b = create_browser(destination, parms[:selector])
411
+ if params[:selector]
412
+ b = create_browser(destination, params[:selector])
413
413
  else
414
414
  b = create_browser(destination)
415
415
  end
@@ -428,7 +428,7 @@ module javax.jms::Session
428
428
  # Browse the specified queue, calling the Proc supplied for each message found
429
429
  #
430
430
  # Parameters:
431
- # :q_name => String: Name of the Queue to return
431
+ # :queue_name => String: Name of the Queue to return
432
432
  # Symbol: :temporary => Create temporary queue
433
433
  # Mandatory unless :topic_name is supplied
434
434
  # Or,
@@ -436,19 +436,19 @@ module javax.jms::Session
436
436
  #
437
437
  # :selector => Filter which messages should be returned from the queue
438
438
  # Default: All messages
439
- def browse(parms={}, &proc)
440
- self.browser(parms) {|b| b.each(parms, &proc)}
439
+ def browse(params={}, &proc)
440
+ self.browser(params) {|b| b.each(params, &proc)}
441
441
  end
442
442
  end
443
443
 
444
444
  # Workaround for IBM MQ JMS implementation that implements an undocumented consume method
445
445
  if defined? com.ibm.mq.jms::MQSession
446
446
  class com.ibm.mq.jms::MQSession
447
- def consume(parms, &proc)
447
+ def consume(params, &proc)
448
448
  result = nil
449
- c = self.consumer(parms)
449
+ c = self.consumer(params)
450
450
  begin
451
- result = c.each(parms, &proc)
451
+ result = c.each(params, &proc)
452
452
  ensure
453
453
  c.close
454
454
  end
@@ -2,8 +2,10 @@
2
2
  module JMS
3
3
 
4
4
  # Returns the logger being used by jruby-jms
5
+ # Unless previously set, it will try to use the Rails logger and if it
6
+ # is not present, it will return a new Ruby logger
5
7
  def self.logger
6
- @logger ||= (rails_logger || default_logger)
8
+ @logger ||= (self.rails_logger || self.ruby_logger)
7
9
  end
8
10
 
9
11
  # Replace the logger for jruby-jms
@@ -11,19 +13,22 @@ module JMS
11
13
  @logger = logger
12
14
  end
13
15
 
16
+ # Use the ruby logger, but add needed trace level logging which will result
17
+ # in debug log entries
18
+ def self.ruby_logger(level=nil, target=STDOUT)
19
+ require 'logger'
20
+
21
+ l = ::Logger.new(target)
22
+ l.instance_eval "alias :trace :debug"
23
+ l.instance_eval "alias :trace? :debug?"
24
+ l.level = level || ::Logger::INFO
25
+ l
26
+ end
27
+
14
28
  private
15
29
  def self.rails_logger
16
30
  (defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger) ||
17
31
  (defined?(RAILS_DEFAULT_LOGGER) && RAILS_DEFAULT_LOGGER.respond_to?(:debug) && RAILS_DEFAULT_LOGGER)
18
32
  end
19
33
 
20
- # By default we use the standard Ruby Logger
21
- def self.default_logger
22
- require 'logger'
23
- require 'jms/logger'
24
- l = Logger.new(STDOUT)
25
- l.level = Logger::INFO
26
- l
27
- end
28
-
29
34
  end
@@ -32,10 +32,10 @@ module JMS
32
32
  # is called again with :statistics => true
33
33
  #
34
34
  # The statistics gathered are returned when :statistics => true and :async => false
35
- def initialize(parms={}, &proc)
35
+ def initialize(params={}, &proc)
36
36
  @proc = proc
37
37
 
38
- if parms[:statistics]
38
+ if params[:statistics]
39
39
  @message_count = 0
40
40
  @start_time = Time.now
41
41
  end
@@ -86,7 +86,7 @@ class JMSTest < Test::Unit::TestCase
86
86
  assert_nil connection.close
87
87
  end
88
88
 
89
- should 'Create a session from the connection with parms' do
89
+ should 'Create a session from the connection with params' do
90
90
  connection = JMS::Connection.new(@config)
91
91
 
92
92
  session_parms = {
@@ -105,7 +105,7 @@ class JMSTest < Test::Unit::TestCase
105
105
  assert_nil connection.close
106
106
  end
107
107
 
108
- should 'Create a session from the connection with block and parms' do
108
+ should 'Create a session from the connection with block and params' do
109
109
  JMS::Connection.start(@config) do |connection|
110
110
 
111
111
  session_parms = {
@@ -122,7 +122,7 @@ class JMSTest < Test::Unit::TestCase
122
122
  end
123
123
  end
124
124
 
125
- should 'Create a session from the connection with block and parms opposite test' do
125
+ should 'Create a session from the connection with block and params opposite test' do
126
126
  JMS::Connection.start(@config) do |connection|
127
127
 
128
128
  session_parms = {
@@ -143,7 +143,7 @@ class JMSTest < Test::Unit::TestCase
143
143
  should 'start an on_message handler' do
144
144
  JMS::Connection.start(@config) do |connection|
145
145
  value = nil
146
- connection.on_message(:transacted => true, :q_name => :temporary) do |message|
146
+ connection.on_message(:transacted => true, :queue_name => :temporary) do |message|
147
147
  value = "received"
148
148
  end
149
149
  end
@@ -0,0 +1,131 @@
1
+ # Allow examples to be run in-place without requiring a gem install
2
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
3
+
4
+ require 'rubygems'
5
+ require 'test/unit'
6
+ require 'shoulda'
7
+ require 'jms'
8
+ require 'yaml'
9
+
10
+ class JMSTest < Test::Unit::TestCase
11
+ context 'JMS Session' do
12
+ # Load configuration from jms.yml
13
+ setup do
14
+ # To change the JMS provider, edit jms.yml and change :default
15
+
16
+ # Load Connection parameters from configuration file
17
+ cfg = YAML.load_file(File.join(File.dirname(__FILE__), 'jms.yml'))
18
+ jms_provider = cfg['default']
19
+ @config = cfg[jms_provider]
20
+ raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless @config
21
+ @queue_name = @config[:queue_name] || raise("Mandatory :queue_name missing from jms.yml")
22
+ @topic_name = @config[:topic_name] || raise("Mandatory :topic_name missing from jms.yml")
23
+ end
24
+
25
+ should 'produce and consume messages to/from a temporary queue' do
26
+ JMS::Connection.session(@config) do |session|
27
+ assert_not_nil session
28
+ data = nil
29
+ session.producer(:queue_name => :temporary) do |producer|
30
+ # Send Message
31
+ producer.send(session.message('Hello World'))
32
+
33
+ # Consume Message
34
+ session.consume(:destination => producer.destination) do |message|
35
+ assert_equal message.java_kind_of?(javax.jms::TextMessage), true
36
+ data = message.data
37
+ end
38
+ end
39
+ assert_equal data, 'Hello World'
40
+ end
41
+ end
42
+
43
+ should 'produce, browse and consume messages to/from a queue' do
44
+ JMS::Connection.session(@config) do |session|
45
+ assert_not_nil session
46
+ data = nil
47
+ browse_data = nil
48
+ session.producer(:queue_name => @queue_name) do |producer|
49
+ # Send Message
50
+ producer.send(session.message('Hello World'))
51
+
52
+ # Browse Message
53
+ session.browse(:queue_name => @queue_name) do |message|
54
+ assert_equal message.java_kind_of?(javax.jms::TextMessage), true
55
+ browse_data = message.data
56
+ end
57
+
58
+ # Consume Message
59
+ session.consume(:queue_name => @queue_name) do |message|
60
+ assert_equal message.java_kind_of?(javax.jms::TextMessage), true
61
+ data = message.data
62
+ end
63
+ end
64
+ assert_equal 'Hello World', data
65
+ assert_equal 'Hello World', browse_data
66
+ end
67
+ end
68
+
69
+ should 'support setting persistence using symbols and the java constants' do
70
+ JMS::Connection.session(@config) do |session|
71
+ message = session.message('Hello World')
72
+ assert_equal message.jms_delivery_mode, :non_persistent
73
+ message.jms_delivery_mode = :non_persistent
74
+ assert_equal message.jms_delivery_mode, :non_persistent
75
+ message.jms_delivery_mode = :persistent
76
+ assert_equal message.jms_delivery_mode, :persistent
77
+ end
78
+ end
79
+
80
+ should 'produce and consume non-persistent messages' do
81
+ JMS::Connection.session(@config) do |session|
82
+ assert_not_nil session
83
+ data = nil
84
+ session.producer(:queue_name => :temporary) do |producer|
85
+ message = session.message('Hello World')
86
+ message.jms_delivery_mode = :non_persistent
87
+ assert_equal :non_persistent, message.jms_delivery_mode
88
+ assert_equal false, message.persistent?
89
+
90
+ # Send Message
91
+ producer.send(message)
92
+
93
+ # Consume Message
94
+ session.consume(:destination => producer.destination) do |message|
95
+ assert_equal message.java_kind_of?(javax.jms::TextMessage), true
96
+ data = message.data
97
+ #assert_equal :non_persistent, message.jms_delivery_mode
98
+ #assert_equal false, message.persistent?
99
+ end
100
+ end
101
+ assert_equal data, 'Hello World'
102
+ end
103
+ end
104
+
105
+ should 'produce and consume persistent messages' do
106
+ JMS::Connection.session(@config) do |session|
107
+ assert_not_nil session
108
+ data = nil
109
+ session.producer(:queue_name => :temporary) do |producer|
110
+ message = session.message('Hello World')
111
+ message.jms_delivery_mode = :persistent
112
+ assert_equal :persistent, message.jms_delivery_mode
113
+ assert_equal true, message.persistent?
114
+
115
+ # Send Message
116
+ producer.send(message)
117
+
118
+ # Consume Message
119
+ session.consume(:destination => producer.destination) do |message|
120
+ assert_equal message.java_kind_of?(javax.jms::TextMessage), true
121
+ data = message.data
122
+ assert_equal :persistent, message.jms_delivery_mode
123
+ assert_equal true, message.persistent?
124
+ end
125
+ end
126
+ assert_equal data, 'Hello World'
127
+ end
128
+ end
129
+
130
+ end
131
+ end
@@ -136,49 +136,5 @@ class JMSTest < Test::Unit::TestCase
136
136
  end
137
137
  end
138
138
 
139
- should 'produce and consume messages to/from a temporary queue' do
140
- JMS::Connection.session(@config) do |session|
141
- assert_not_nil session
142
- data = nil
143
- session.producer(:queue_name => :temporary) do |producer|
144
- # Send Message
145
- producer.send(session.message('Hello World'))
146
-
147
- # Consume Message
148
- session.consume(:destination => producer.destination) do |message|
149
- assert_equal message.java_kind_of?(javax.jms::TextMessage), true
150
- data = message.data
151
- end
152
- end
153
- assert_equal data, 'Hello World'
154
- end
155
- end
156
-
157
- should 'produce, browse and consume messages to/from a queue' do
158
- JMS::Connection.session(@config) do |session|
159
- assert_not_nil session
160
- data = nil
161
- browse_data = nil
162
- session.producer(:queue_name => @queue_name) do |producer|
163
- # Send Message
164
- producer.send(session.message('Hello World'))
165
-
166
- # Browse Message
167
- session.browse(:queue_name => @queue_name) do |message|
168
- assert_equal message.java_kind_of?(javax.jms::TextMessage), true
169
- browse_data = message.data
170
- end
171
-
172
- # Consume Message
173
- session.consume(:queue_name => @queue_name) do |message|
174
- assert_equal message.java_kind_of?(javax.jms::TextMessage), true
175
- data = message.data
176
- end
177
- end
178
- assert_equal data, 'Hello World'
179
- assert_equal browse_data, 'Hello World'
180
- end
181
- end
182
-
183
139
  end
184
140
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 10
8
- - 0
9
- version: 0.10.0
8
+ - 1
9
+ version: 0.10.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Reid Morrison
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-10 00:00:00 -05:00
17
+ date: 2011-02-21 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -45,11 +45,11 @@ files:
45
45
  - lib/jms/javax_jms_queue_browser.rb
46
46
  - lib/jms/javax_jms_session.rb
47
47
  - lib/jms/javax_jms_text_message.rb
48
- - lib/jms/logger.rb
49
48
  - lib/jms/logging.rb
50
49
  - lib/jms/message_listener.rb
51
50
  - test/connection_test.rb
52
51
  - test/jms.yml
52
+ - test/message_test.rb
53
53
  - test/session_test.rb
54
54
  has_rdoc: true
55
55
  homepage: https://github.com/reidmorrison/jruby-jms
@@ -1,4 +0,0 @@
1
- # Add trace method to Ruby Logger class
2
- class Logger
3
- alias :trace :debug
4
- end