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/session_pool.rb
CHANGED
@@ -14,8 +14,6 @@ module JMS
|
|
14
14
|
# see regular session parameters from: JMS::Connection#initialize
|
15
15
|
#
|
16
16
|
# Additional parameters for controlling the session pool itself
|
17
|
-
# :pool_name Name of the pool as it shows up in the logger.
|
18
|
-
# Default: 'JMS::SessionPool'
|
19
17
|
# :pool_size Maximum Pool Size. Default: 10
|
20
18
|
# The pool only grows as needed and will never exceed
|
21
19
|
# :pool_size
|
@@ -25,9 +23,8 @@ module JMS
|
|
25
23
|
# :pool_warn_timeout Number of seconds to wait before logging a warning when a
|
26
24
|
# session in the pool is not available
|
27
25
|
# Default: 5
|
28
|
-
# :
|
29
|
-
#
|
30
|
-
# Default: JMS.logger
|
26
|
+
# :pool_name Name of the pool as it shows up in the logger.
|
27
|
+
# Default: 'JMS::SessionPool'
|
31
28
|
# Example:
|
32
29
|
# session_pool = connection.create_session_pool(config)
|
33
30
|
# session_pool.session do |session|
|
@@ -38,22 +35,26 @@ module JMS
|
|
38
35
|
# Save Session params since it will be used every time a new session is
|
39
36
|
# created in the pool
|
40
37
|
session_params = params.nil? ? {} : params.dup
|
41
|
-
logger
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
50
|
-
|
38
|
+
logger = SemanticLogger[session_params[:pool_name] || self.class]
|
39
|
+
|
40
|
+
# Use GenePool can create and manage the pool of sessions
|
41
|
+
@pool = GenePool.new(
|
42
|
+
name: '',
|
43
|
+
pool_size: session_params[:pool_size] || 10,
|
44
|
+
warn_timeout: session_params[:pool_warn_timeout] || 5,
|
45
|
+
timeout: session_params[:pool_timeout] || 60,
|
46
|
+
close_proc: nil,
|
47
|
+
logger: logger
|
48
|
+
) do
|
49
|
+
session = connection.create_session(session_params)
|
50
|
+
# Turn on Java class persistence: https://github.com/jruby/jruby/wiki/Persistence
|
51
|
+
session.class.__persistent__ = true
|
52
|
+
session
|
51
53
|
end
|
52
54
|
|
53
55
|
# Handle connection failures
|
54
56
|
connection.on_exception do |jms_exception|
|
55
|
-
logger.error "JMS Connection Exception has occurred: #{jms_exception}"
|
56
|
-
#TODO: Close all sessions in the pool and release from the pool?
|
57
|
+
logger.error "JMS Connection Exception has occurred: #{jms_exception.inspect}"
|
57
58
|
end
|
58
59
|
end
|
59
60
|
|
@@ -83,30 +84,29 @@ module JMS
|
|
83
84
|
# returned to the pool.
|
84
85
|
#
|
85
86
|
# Parameters:
|
86
|
-
# :
|
87
|
-
#
|
87
|
+
# queue_name: [String] Name of the Queue to return
|
88
|
+
# [Symbol] Create temporary queue
|
88
89
|
# Mandatory unless :topic_name is supplied
|
89
90
|
# Or,
|
90
|
-
# :
|
91
|
-
#
|
91
|
+
# topic_name: [String] Name of the Topic to write to or subscribe to
|
92
|
+
# [Symbol] Create temporary topic
|
92
93
|
# Mandatory unless :queue_name is supplied
|
93
94
|
# Or,
|
94
|
-
# :
|
95
|
+
# destination: [javaxJms::Destination] Destination to use
|
95
96
|
#
|
96
|
-
# :
|
97
|
+
# selector: Filter which messages should be returned from the queue
|
97
98
|
# Default: All messages
|
98
|
-
# :
|
99
|
+
# no_local: Determine whether messages published by its own connection
|
99
100
|
# should be delivered to it
|
100
101
|
# Default: false
|
101
102
|
#
|
102
103
|
# Example
|
103
|
-
# session_pool.consumer(:
|
104
|
+
# session_pool.consumer(queue_name: 'MyQueue') do |session, consumer|
|
104
105
|
# message = consumer.receive(timeout)
|
105
106
|
# puts message.data if message
|
106
107
|
# end
|
107
108
|
def consumer(params, &block)
|
108
109
|
session do |s|
|
109
|
-
consumer = nil
|
110
110
|
begin
|
111
111
|
consumer = s.consumer(params)
|
112
112
|
block.call(s, consumer)
|
@@ -122,23 +122,22 @@ module JMS
|
|
122
122
|
# returned to the pool.
|
123
123
|
#
|
124
124
|
# Parameters:
|
125
|
-
# :
|
126
|
-
#
|
125
|
+
# queue_name: [String] Name of the Queue to return
|
126
|
+
# [Symbol] Create temporary queue
|
127
127
|
# Mandatory unless :topic_name is supplied
|
128
128
|
# Or,
|
129
|
-
# :
|
130
|
-
#
|
129
|
+
# topic_name: [String] Name of the Topic to write to or subscribe to
|
130
|
+
# [Symbol] Create temporary topic
|
131
131
|
# Mandatory unless :queue_name is supplied
|
132
132
|
# Or,
|
133
|
-
# :
|
133
|
+
# destination: [javaxJms::Destination] Destination to use
|
134
134
|
#
|
135
135
|
# Example
|
136
|
-
# session_pool.producer(:
|
136
|
+
# session_pool.producer(queue_name: 'ExampleQueue') do |session, producer|
|
137
137
|
# producer.send(session.message("Hello World"))
|
138
138
|
# end
|
139
139
|
def producer(params, &block)
|
140
140
|
session do |s|
|
141
|
-
producer = nil
|
142
141
|
begin
|
143
142
|
producer = s.producer(params)
|
144
143
|
block.call(s, producer)
|
@@ -154,15 +153,9 @@ module JMS
|
|
154
153
|
#
|
155
154
|
# Note: Once closed a session pool cannot be re-used. A new instance must
|
156
155
|
# be created
|
157
|
-
#
|
158
|
-
# TODO: Allow an option to wait for active sessions to be returned before
|
159
|
-
# closing
|
160
156
|
def close
|
161
|
-
@pool.each
|
162
|
-
s.close
|
163
|
-
end
|
157
|
+
@pool.each { |s| s.close }
|
164
158
|
end
|
165
159
|
|
166
160
|
end
|
167
|
-
|
168
|
-
end
|
161
|
+
end
|
data/lib/jms/text_message.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
|
#Interface javax.jms.TextMessage
|
18
2
|
module JMS::TextMessage
|
19
3
|
def data
|
data/lib/jms/version.rb
CHANGED
data/test/connection_test.rb
CHANGED
@@ -1,68 +1,43 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require 'jms'
|
8
|
-
require 'yaml'
|
9
|
-
|
10
|
-
# Set Log4J properties file so that it does not need to be in the CLASSPATH
|
11
|
-
java.lang.System.properties['log4j.configuration'] = "test/log4j.properties"
|
12
|
-
|
13
|
-
class JMSTest < Test::Unit::TestCase
|
14
|
-
context 'JMS Connection' do
|
15
|
-
# Load configuration from jms.yml
|
16
|
-
setup do
|
17
|
-
# To change the JMS provider, edit jms.yml and change :default
|
18
|
-
|
19
|
-
# Load Connection parameters from configuration file
|
20
|
-
cfg = YAML.load_file(File.join(File.dirname(__FILE__), 'jms.yml'))
|
21
|
-
jms_provider = cfg['default']
|
22
|
-
@config = cfg[jms_provider]
|
23
|
-
raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless @config
|
24
|
-
@queue_name = @config.delete(:queue_name) || raise("Mandatory :queue_name missing from jms.yml")
|
25
|
-
@topic_name = @config.delete(:topic_name) || raise("Mandatory :topic_name missing from jms.yml")
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class ConnectionTest < Minitest::Test
|
4
|
+
describe JMS::Connection do
|
5
|
+
before do
|
6
|
+
@config, @queue_name, @topic_name = read_config
|
26
7
|
end
|
27
8
|
|
28
|
-
|
9
|
+
it 'Create Connection to the Broker/Server' do
|
29
10
|
connection = JMS::Connection.new(@config)
|
30
|
-
JMS
|
31
|
-
|
11
|
+
JMS.logger.info connection.to_s
|
12
|
+
assert connection
|
32
13
|
connection.close
|
33
14
|
end
|
34
15
|
|
35
|
-
|
16
|
+
it 'Create and start Connection to the Broker/Server with block' do
|
36
17
|
JMS::Connection.start(@config) do |connection|
|
37
|
-
|
18
|
+
assert connection
|
38
19
|
end
|
39
20
|
end
|
40
21
|
|
41
|
-
|
22
|
+
it 'Create and start Connection to the Broker/Server with block and start one session' do
|
42
23
|
JMS::Connection.session(@config) do |session|
|
43
|
-
|
24
|
+
assert session
|
44
25
|
end
|
45
26
|
end
|
46
27
|
|
47
|
-
|
28
|
+
it 'Start and stop connection' do
|
48
29
|
connection = JMS::Connection.new(@config)
|
49
|
-
|
30
|
+
assert connection
|
50
31
|
assert_nil connection.start
|
51
32
|
|
52
33
|
assert_nil connection.stop
|
53
34
|
assert_nil connection.close
|
54
35
|
end
|
55
36
|
|
56
|
-
|
37
|
+
it 'Create a session from the connection' do
|
57
38
|
connection = JMS::Connection.new(@config)
|
58
|
-
|
59
|
-
|
60
|
-
:transacted => true,
|
61
|
-
:options => JMS::Session::AUTO_ACKNOWLEDGE
|
62
|
-
}
|
63
|
-
|
64
|
-
session = connection.create_session
|
65
|
-
assert_not_nil session
|
39
|
+
session = connection.create_session
|
40
|
+
assert session
|
66
41
|
assert_equal session.transacted?, false
|
67
42
|
assert_nil session.close
|
68
43
|
|
@@ -70,11 +45,10 @@ class JMSTest < Test::Unit::TestCase
|
|
70
45
|
assert_nil connection.close
|
71
46
|
end
|
72
47
|
|
73
|
-
|
48
|
+
it 'Create a session with a block' do
|
74
49
|
connection = JMS::Connection.new(@config)
|
75
|
-
|
76
50
|
connection.session do |session|
|
77
|
-
|
51
|
+
assert session
|
78
52
|
assert_equal session.transacted?, false
|
79
53
|
end
|
80
54
|
|
@@ -82,25 +56,19 @@ class JMSTest < Test::Unit::TestCase
|
|
82
56
|
assert_nil connection.close
|
83
57
|
end
|
84
58
|
|
85
|
-
|
59
|
+
it 'create a session without a block and throw exception' do
|
86
60
|
connection = JMS::Connection.new(@config)
|
87
61
|
|
88
|
-
|
62
|
+
assert_raises(ArgumentError) { connection.session }
|
89
63
|
|
90
64
|
assert_nil connection.stop
|
91
65
|
assert_nil connection.close
|
92
66
|
end
|
93
67
|
|
94
|
-
|
68
|
+
it 'Create a session from the connection with params' do
|
95
69
|
connection = JMS::Connection.new(@config)
|
96
|
-
|
97
|
-
|
98
|
-
:transacted => true,
|
99
|
-
:options => JMS::Session::AUTO_ACKNOWLEDGE
|
100
|
-
}
|
101
|
-
|
102
|
-
session = connection.create_session(session_parms)
|
103
|
-
assert_not_nil session
|
70
|
+
session = connection.create_session(transacted: true, options: JMS::Session::AUTO_ACKNOWLEDGE)
|
71
|
+
assert session
|
104
72
|
assert_equal session.transacted?, true
|
105
73
|
# When session is transacted, options are ignore, so ack mode must be transacted
|
106
74
|
assert_equal session.acknowledge_mode, JMS::Session::SESSION_TRANSACTED
|
@@ -110,16 +78,10 @@ class JMSTest < Test::Unit::TestCase
|
|
110
78
|
assert_nil connection.close
|
111
79
|
end
|
112
80
|
|
113
|
-
|
81
|
+
it 'Create a session from the connection with block and params' do
|
114
82
|
JMS::Connection.start(@config) do |connection|
|
115
|
-
|
116
|
-
|
117
|
-
:transacted => true,
|
118
|
-
:options => JMS::Session::CLIENT_ACKNOWLEDGE
|
119
|
-
}
|
120
|
-
|
121
|
-
connection.session(session_parms) do |session|
|
122
|
-
assert_not_nil session
|
83
|
+
connection.session(transacted: true, options: JMS::Session::CLIENT_ACKNOWLEDGE) do |session|
|
84
|
+
assert session
|
123
85
|
assert_equal session.transacted?, true
|
124
86
|
# When session is transacted, options are ignore, so ack mode must be transacted
|
125
87
|
assert_equal session.acknowledge_mode, JMS::Session::SESSION_TRANSACTED
|
@@ -127,33 +89,25 @@ class JMSTest < Test::Unit::TestCase
|
|
127
89
|
end
|
128
90
|
end
|
129
91
|
|
130
|
-
|
92
|
+
it 'Create a session from the connection with block and params opposite test' do
|
131
93
|
JMS::Connection.start(@config) do |connection|
|
132
|
-
|
133
|
-
|
134
|
-
:transacted => false,
|
135
|
-
:options => JMS::Session::AUTO_ACKNOWLEDGE
|
136
|
-
}
|
137
|
-
|
138
|
-
connection.session(session_parms) do |session|
|
139
|
-
assert_not_nil session
|
94
|
+
connection.session(transacted: false, options: JMS::Session::AUTO_ACKNOWLEDGE) do |session|
|
95
|
+
assert session
|
140
96
|
assert_equal session.transacted?, false
|
141
97
|
assert_equal session.acknowledge_mode, JMS::Session::AUTO_ACKNOWLEDGE
|
142
98
|
end
|
143
99
|
end
|
144
100
|
end
|
145
101
|
|
146
|
-
|
147
|
-
|
148
|
-
should 'start an on_message handler' do
|
102
|
+
describe 'additional capabilities' do
|
103
|
+
it 'start an on_message handler' do
|
149
104
|
JMS::Connection.start(@config) do |connection|
|
150
105
|
value = nil
|
151
|
-
connection.on_message(:
|
152
|
-
value =
|
106
|
+
connection.on_message(transacted: true, queue_name: :temporary) do |message|
|
107
|
+
value = 'received'
|
153
108
|
end
|
154
109
|
end
|
155
110
|
end
|
156
|
-
|
157
111
|
end
|
158
112
|
|
159
113
|
end
|
data/test/jms.yml
CHANGED
@@ -9,10 +9,10 @@
|
|
9
9
|
# Which JMS Provider to use by default
|
10
10
|
|
11
11
|
#default: hornetq222
|
12
|
-
#default:
|
12
|
+
#default: hornetq2_4_0
|
13
13
|
#default: activemq543
|
14
14
|
#default: activemq551
|
15
|
-
default:
|
15
|
+
default: activemq5_11_1
|
16
16
|
#default: webspheremq6
|
17
17
|
#default: webspheremq7
|
18
18
|
|
@@ -43,7 +43,16 @@ activemq590:
|
|
43
43
|
:queue_name: TestQueue
|
44
44
|
:topic_name: TestTopic
|
45
45
|
|
46
|
-
|
46
|
+
activemq5_11_1:
|
47
|
+
:factory: org.apache.activemq.ActiveMQConnectionFactory
|
48
|
+
:broker_url: tcp://localhost:61616
|
49
|
+
:require_jars:
|
50
|
+
- /usr/local/Cellar/activemq/5.11.1/libexec/activemq-all-5.11.1.jar
|
51
|
+
- /usr/local/Cellar/activemq/5.11.1/libexec/lib/optional/log4j-1.2.17.jar
|
52
|
+
:queue_name: TestQueue
|
53
|
+
:topic_name: TestTopic
|
54
|
+
|
55
|
+
hornetq2_4_0:
|
47
56
|
# Connect to a local HornetQ Broker using JNDI
|
48
57
|
:jndi_name: /ConnectionFactory
|
49
58
|
:jndi_context:
|
@@ -53,11 +62,12 @@ hornetq225:
|
|
53
62
|
java.naming.security.principal: guest
|
54
63
|
java.naming.security.credentials: guest
|
55
64
|
:require_jars:
|
56
|
-
-
|
57
|
-
-
|
58
|
-
-
|
59
|
-
-
|
60
|
-
-
|
65
|
+
- /usr/local/Cellar/hornetq/2.4.0/libexec/lib/hornetq-commons.jar
|
66
|
+
- /usr/local/Cellar/hornetq/2.4.0/libexec/lib/hornetq-core-client.jar
|
67
|
+
- /usr/local/Cellar/hornetq/2.4.0/libexec/lib/hornetq-jms-client.jar
|
68
|
+
- /usr/local/Cellar/hornetq/2.4.0/libexec/lib/jboss-jms-api.jar
|
69
|
+
- /usr/local/Cellar/hornetq/2.4.0/libexec/lib/jnp-client.jar
|
70
|
+
- /usr/local/Cellar/hornetq/2.4.0/libexec/lib/netty.jar
|
61
71
|
:queue_name: TestQueue
|
62
72
|
:topic_name: TestTopic
|
63
73
|
|
data/test/message_test.rb
CHANGED
@@ -1,37 +1,21 @@
|
|
1
|
-
|
2
|
-
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
1
|
+
require_relative 'test_helper'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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.delete(:queue_name) || raise("Mandatory :queue_name missing from jms.yml")
|
22
|
-
@topic_name = @config.delete(:topic_name) || raise("Mandatory :topic_name missing from jms.yml")
|
3
|
+
class MessageTest < Minitest::Test
|
4
|
+
describe 'JMS::Message' do
|
5
|
+
before do
|
6
|
+
@config, @queue_name, @topic_name = read_config
|
23
7
|
end
|
24
8
|
|
25
|
-
|
9
|
+
it 'produce and consume messages to/from a temporary queue' do
|
26
10
|
JMS::Connection.session(@config) do |session|
|
27
|
-
|
11
|
+
assert session
|
28
12
|
data = nil
|
29
|
-
session.producer(:
|
13
|
+
session.producer(queue_name: :temporary) do |producer|
|
30
14
|
# Send Message
|
31
15
|
producer.send(session.message('Hello World'))
|
32
16
|
|
33
17
|
# Consume Message
|
34
|
-
session.consume(:
|
18
|
+
session.consume(destination: producer.destination, timeout: 1000) do |message|
|
35
19
|
assert_equal message.java_kind_of?(JMS::TextMessage), true
|
36
20
|
data = message.data
|
37
21
|
end
|
@@ -40,23 +24,23 @@ class JMSTest < Test::Unit::TestCase
|
|
40
24
|
end
|
41
25
|
end
|
42
26
|
|
43
|
-
|
27
|
+
it 'produce, browse and consume messages to/from a queue' do
|
44
28
|
JMS::Connection.session(@config) do |session|
|
45
|
-
|
46
|
-
data
|
29
|
+
assert session
|
30
|
+
data = :timed_out
|
47
31
|
browse_data = :timed_out
|
48
|
-
session.producer(:
|
32
|
+
session.producer(queue_name: @queue_name) do |producer|
|
49
33
|
# Send Message
|
50
34
|
producer.send(session.message('Hello World'))
|
51
35
|
|
52
36
|
# Browse Message
|
53
|
-
session.browse(:
|
37
|
+
session.browse(queue_name: @queue_name, timeout: 1000) do |message|
|
54
38
|
assert_equal message.java_kind_of?(JMS::TextMessage), true
|
55
39
|
browse_data = message.data
|
56
40
|
end
|
57
41
|
|
58
42
|
# Consume Message
|
59
|
-
session.consume(:
|
43
|
+
session.consume(queue_name: @queue_name, timeout: 1000) do |message|
|
60
44
|
assert_equal message.java_kind_of?(JMS::TextMessage), true
|
61
45
|
data = message.data
|
62
46
|
end
|
@@ -66,9 +50,9 @@ class JMSTest < Test::Unit::TestCase
|
|
66
50
|
end
|
67
51
|
end
|
68
52
|
|
69
|
-
|
53
|
+
it 'support setting persistence using symbols and the java constants' do
|
70
54
|
JMS::Connection.session(@config) do |session|
|
71
|
-
message
|
55
|
+
message = session.message('Hello World')
|
72
56
|
message.jms_delivery_mode_sym = :non_persistent
|
73
57
|
assert_equal message.jms_delivery_mode_sym, :non_persistent
|
74
58
|
message.jms_delivery_mode_sym = :persistent
|
@@ -76,12 +60,12 @@ class JMSTest < Test::Unit::TestCase
|
|
76
60
|
end
|
77
61
|
end
|
78
62
|
|
79
|
-
|
63
|
+
it 'produce and consume non-persistent messages' do
|
80
64
|
JMS::Connection.session(@config) do |session|
|
81
|
-
|
65
|
+
assert session
|
82
66
|
data = nil
|
83
|
-
session.producer(:
|
84
|
-
message
|
67
|
+
session.producer(queue_name: :temporary) do |producer|
|
68
|
+
message = session.message('Hello World')
|
85
69
|
message.jms_delivery_mode_sym = :non_persistent
|
86
70
|
assert_equal :non_persistent, message.jms_delivery_mode_sym
|
87
71
|
assert_equal false, message.persistent?
|
@@ -90,7 +74,7 @@ class JMSTest < Test::Unit::TestCase
|
|
90
74
|
producer.send(message)
|
91
75
|
|
92
76
|
# Consume Message
|
93
|
-
session.consume(:
|
77
|
+
session.consume(destination: producer.destination, timeout: 1000) do |message|
|
94
78
|
assert_equal message.java_kind_of?(JMS::TextMessage), true
|
95
79
|
data = message.data
|
96
80
|
#assert_equal :non_persistent, message.jms_delivery_mode
|
@@ -101,12 +85,12 @@ class JMSTest < Test::Unit::TestCase
|
|
101
85
|
end
|
102
86
|
end
|
103
87
|
|
104
|
-
|
88
|
+
it 'produce and consume persistent messages' do
|
105
89
|
JMS::Connection.session(@config) do |session|
|
106
|
-
|
90
|
+
assert session
|
107
91
|
data = nil
|
108
|
-
session.producer(:
|
109
|
-
message
|
92
|
+
session.producer(queue_name: @queue_name) do |producer|
|
93
|
+
message = session.message('Hello World')
|
110
94
|
message.jms_delivery_mode_sym = :persistent
|
111
95
|
assert_equal :persistent, message.jms_delivery_mode_sym
|
112
96
|
assert_equal true, message.persistent?
|
@@ -115,7 +99,7 @@ class JMSTest < Test::Unit::TestCase
|
|
115
99
|
producer.send(message)
|
116
100
|
|
117
101
|
# Consume Message
|
118
|
-
session.consume(:
|
102
|
+
session.consume(destination: producer.destination, timeout: 1000) do |message|
|
119
103
|
assert_equal message.java_kind_of?(JMS::TextMessage), true
|
120
104
|
data = message.data
|
121
105
|
assert_equal :persistent, message.jms_delivery_mode_sym
|