jruby-hornetq 0.2.5.alpha → 0.3.0.alpha
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 +12 -0
- data/Rakefile +13 -1
- data/bin/hornetq_server +2 -2
- data/examples/README +6 -0
- data/examples/{client/advanced → advanced}/batch_client.rb +18 -34
- data/examples/advanced/bytes_producer.rb +25 -0
- data/examples/advanced/client.rb +56 -0
- data/examples/{client/advanced/multi_client.rb → advanced/client_session_pooling.rb} +29 -25
- data/examples/advanced/consume_on_message.rb +50 -0
- data/examples/advanced/consumer.rb +31 -0
- data/examples/{client/advanced → advanced}/hornetq.yml +8 -6
- data/examples/advanced/multi_client.rb +71 -0
- data/examples/advanced/producer.rb +37 -0
- data/examples/advanced/server.rb +44 -0
- data/examples/client-server/client.rb +40 -0
- data/examples/client-server/server.rb +37 -0
- data/examples/producer-consumer/consume_all.rb +25 -0
- data/examples/producer-consumer/consume_on_message.rb +46 -0
- data/examples/producer-consumer/consumer.rb +27 -0
- data/examples/producer-consumer/producer.rb +32 -0
- data/examples/{client/resque → resque}/hornetq_job.rb +2 -2
- data/examples/{client/resque → resque}/processor.rb +1 -1
- data/examples/{client/resque → resque}/readme.md +0 -0
- data/examples/{client/resque → resque}/resque_conf.rb +0 -0
- data/examples/{client/resque → resque}/resque_worker.rb +0 -0
- data/examples/{client/resque → resque}/sleep_job.rb +0 -0
- data/examples/{server → server-config}/backup_server.yml +0 -0
- data/examples/{server → server-config}/live_server.yml +0 -0
- data/examples/{server → server-config}/standalone_server.yml +0 -0
- data/examples/{client → simple}/invm.rb +6 -7
- data/examples/{advanced/transaction-failover → transaction-failover}/README +0 -0
- data/examples/{advanced/transaction-failover → transaction-failover}/consumer.rb +4 -1
- data/examples/{advanced/transaction-failover → transaction-failover}/hornetq.yml +6 -3
- data/examples/{advanced/transaction-failover → transaction-failover}/producer.rb +8 -3
- data/examples/{simple_worker → worker}/README +0 -0
- data/examples/worker/hornetq.yml +26 -0
- data/examples/worker/producer.rb +71 -0
- data/examples/{simple_worker → worker}/test_object.rb +0 -0
- data/examples/worker/worker.rb +72 -0
- data/lib/hornetq/client.rb +1 -1
- data/lib/hornetq/client/{factory.rb → connection.rb} +153 -86
- data/lib/hornetq/client/message_handler.rb +3 -3
- data/lib/hornetq/client/org_hornetq_api_core_client_client_session.rb +187 -26
- data/lib/hornetq/client/org_hornetq_core_client_impl_client_consumer_impl.rb +26 -9
- data/lib/hornetq/client/org_hornetq_core_client_impl_client_message_impl.rb +190 -35
- data/lib/hornetq/client/session_pool.rb +4 -4
- data/lib/hornetq/common/log_delegate.rb +17 -15
- data/lib/hornetq/common/logging.rb +20 -7
- data/lib/hornetq/common/org_hornetq_core_logging_logger.rb +11 -9
- data/lib/hornetq/server.rb +86 -3
- data/lib/hornetq/{org_hornetq_core_server_hornet_q_server.rb → server/org_hornetq_core_server_hornet_q_server.rb} +1 -1
- data/lib/hornetq/uri.rb +4 -0
- data/test/client_connection_test.rb +158 -0
- data/test/logging_test.rb +32 -0
- data/test/server_test.rb +208 -0
- metadata +47 -48
- data/examples/client/advanced/bytes_producer.rb +0 -21
- data/examples/client/advanced/client.rb +0 -47
- data/examples/client/advanced/consumer.rb +0 -35
- data/examples/client/advanced/multi_consumer.rb +0 -54
- data/examples/client/advanced/producer.rb +0 -35
- data/examples/client/advanced/server.rb +0 -39
- data/examples/client/client.rb +0 -31
- data/examples/client/consumer.rb +0 -22
- data/examples/client/data/bindings/hornetq-bindings-1.bindings +0 -0
- data/examples/client/data/bindings/hornetq-bindings-2.bindings +0 -0
- data/examples/client/data/journal/hornetq-data-1.hq +0 -0
- data/examples/client/data/journal/hornetq-data-2.hq +0 -0
- data/examples/client/producer.rb +0 -21
- data/examples/client/server.rb +0 -31
- data/examples/simple_worker/hornetq.yml +0 -34
- data/examples/simple_worker/producer.rb +0 -54
- data/examples/simple_worker/worker.rb +0 -49
- data/lib/data/bindings/hornetq-bindings-1.bindings +0 -0
- data/lib/data/bindings/hornetq-bindings-2.bindings +0 -0
- data/lib/hornetq/server/factory.rb +0 -87
- data/test/server_factory_test.rb +0 -183
@@ -15,7 +15,7 @@ module HornetQ::Client
|
|
15
15
|
# end
|
16
16
|
#
|
17
17
|
# Parameters:
|
18
|
-
# see regular session parameters from: HornetQ::Client::
|
18
|
+
# see regular session parameters from: HornetQ::Client::Connection::create_session
|
19
19
|
#
|
20
20
|
# Additional parameters for controlling the session pool itself
|
21
21
|
# :pool_name Name of the pool as it shows up in the logger.
|
@@ -30,12 +30,12 @@ module HornetQ::Client
|
|
30
30
|
# For example: Rails.logger
|
31
31
|
# Default: None.
|
32
32
|
# Example:
|
33
|
-
# session_pool =
|
33
|
+
# session_pool = connection.create_session_pool(config)
|
34
34
|
# session_pool.session do |session|
|
35
35
|
# ....
|
36
36
|
# end
|
37
37
|
class SessionPool
|
38
|
-
def initialize(
|
38
|
+
def initialize(connection, params={})
|
39
39
|
# Save Session params since it will be used every time a new session is
|
40
40
|
# created in the pool
|
41
41
|
session_params = params.nil? ? {} : params.dup
|
@@ -46,7 +46,7 @@ module HornetQ::Client
|
|
46
46
|
:pool_size => session_params[:pool_size] || 10,
|
47
47
|
:warn_timeout => session_params[:pool_warn_timeout] || 5,
|
48
48
|
:logger => session_params[:pool_logger]) do
|
49
|
-
s =
|
49
|
+
s = connection.create_session(session_params)
|
50
50
|
# Start the session since it will be used immediately upon creation
|
51
51
|
s.start
|
52
52
|
s
|
@@ -4,9 +4,9 @@ module HornetQ
|
|
4
4
|
#
|
5
5
|
private
|
6
6
|
|
7
|
-
# HornetQ requires a
|
7
|
+
# HornetQ requires a connection from which it can create a logger per thread and/or class
|
8
8
|
class LogDelegateFactory
|
9
|
-
include
|
9
|
+
include Java::org.hornetq.spi.core.logging::LogDelegateFactory
|
10
10
|
|
11
11
|
def createDelegate(klass)
|
12
12
|
LogDelegate.new(klass.name)
|
@@ -24,23 +24,25 @@ module HornetQ
|
|
24
24
|
|
25
25
|
# DRY, generate a method for each required log level
|
26
26
|
['debug', 'error', 'fatal', 'info', 'trace', 'warn'].each do |level|
|
27
|
-
eval
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
27
|
+
eval <<LOG_LEVEL_METHOD
|
28
|
+
def #{level}(message, t=nil)
|
29
|
+
logger = HornetQ::logger
|
30
|
+
if logger.#{level}?
|
31
|
+
if t
|
32
|
+
logger.#{level}("[\#{@class_name}] \#{message}. \#{t.toString}")
|
33
|
+
logger.#{level}(t.stack_trace.toString)
|
34
|
+
else
|
35
|
+
logger.#{level}{"[\#{@class_name}] \#{message}"}
|
36
36
|
end
|
37
37
|
end
|
38
|
+
end
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
end
|
42
|
-
LOG_LEVEL_METHOD
|
40
|
+
def is#{level.capitalize}Enabled
|
41
|
+
HornetQ::logger.#{level}?
|
43
42
|
end
|
44
43
|
|
44
|
+
LOG_LEVEL_METHOD
|
45
|
+
end
|
46
|
+
|
45
47
|
end
|
46
48
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
module HornetQ
|
3
3
|
# Returns the logger being used by both HornetQ and jruby-hornetq
|
4
4
|
def self.logger
|
5
|
-
@logger ||= (rails_logger || default_logger)
|
5
|
+
@logger ||= (self.rails_logger || self.default_logger)
|
6
6
|
end
|
7
7
|
|
8
8
|
# Replace the logger for both HornetQ and jruby-hornetq
|
@@ -10,10 +10,26 @@ module HornetQ
|
|
10
10
|
def self.logger=(logger)
|
11
11
|
@logger = logger
|
12
12
|
# Also replace the HornetQ logger
|
13
|
-
|
13
|
+
if @logger
|
14
|
+
Java::org.hornetq.core.logging::Logger.setDelegateFactory(HornetQ::LogDelegateFactory.new)
|
15
|
+
else
|
16
|
+
Java::org.hornetq.core.logging::Logger.reset
|
17
|
+
end
|
14
18
|
# TODO org.hornetq.core.logging.Logger.setDelegateFactory(org.hornetq.integration.logging.Log4jLogDelegateFactory.new)
|
15
19
|
end
|
16
20
|
|
21
|
+
# Use the ruby logger, but add needed trace level logging which will result
|
22
|
+
# in debug log entries
|
23
|
+
def self.ruby_logger(level=nil, target=STDOUT)
|
24
|
+
require 'logger'
|
25
|
+
|
26
|
+
l = ::Logger.new(target)
|
27
|
+
l.instance_eval "alias :trace :debug"
|
28
|
+
l.instance_eval "alias :trace? :debug?"
|
29
|
+
l.level = level || ::Logger::INFO
|
30
|
+
l
|
31
|
+
end
|
32
|
+
|
17
33
|
private
|
18
34
|
def self.rails_logger
|
19
35
|
(defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger) ||
|
@@ -22,11 +38,8 @@ module HornetQ
|
|
22
38
|
|
23
39
|
# By default we use the HornetQ Logger
|
24
40
|
def self.default_logger
|
41
|
+
# Needs an actual Java class, so give it: org.hornetq.api.core.client::HornetQClient
|
25
42
|
Java::org.hornetq.core.logging::Logger.getLogger(org.hornetq.api.core.client::HornetQClient)
|
26
|
-
# require 'logger'
|
27
|
-
# l = Logger.new(STDOUT)
|
28
|
-
# l.level = Logger::INFO
|
29
|
-
# l
|
30
43
|
end
|
31
|
-
|
44
|
+
|
32
45
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# Extend HornetQ Logger class to respond to standard Rails/Ruby log methods
|
2
|
-
#
|
2
|
+
#
|
3
3
|
# The following methods are already implemented by the java class
|
4
4
|
# initialize
|
5
5
|
# delegate
|
6
|
-
#
|
6
|
+
#
|
7
7
|
# The following methods are being replaced so that they can support blocks
|
8
8
|
# trace
|
9
9
|
# debug
|
@@ -11,7 +11,7 @@
|
|
11
11
|
# warn
|
12
12
|
# error
|
13
13
|
# fatal
|
14
|
-
#
|
14
|
+
#
|
15
15
|
# The following methods are new
|
16
16
|
# trace?
|
17
17
|
# debug?
|
@@ -19,7 +19,7 @@
|
|
19
19
|
# warn?
|
20
20
|
# error?
|
21
21
|
# fatal?
|
22
|
-
#
|
22
|
+
#
|
23
23
|
|
24
24
|
# This has to be a "mix-in" because the class can return instances of itself
|
25
25
|
class org.hornetq.core.logging::Logger
|
@@ -29,21 +29,23 @@ class org.hornetq.core.logging::Logger
|
|
29
29
|
def #{level}?
|
30
30
|
#{level}_enabled?
|
31
31
|
end
|
32
|
-
|
33
|
-
#
|
32
|
+
|
33
|
+
alias :java_#{level} :#{level}
|
34
|
+
|
35
|
+
# Support logging with block parameters that only get evaluated if the
|
34
36
|
# matching log level is enabled
|
35
37
|
def #{level}(message=nil, &block)
|
36
38
|
if #{level}?
|
37
39
|
if block
|
38
|
-
|
40
|
+
java_#{level}(block.call.to_s.to_java_string)
|
39
41
|
else
|
40
|
-
|
42
|
+
java_#{level}(message.to_s.to_java_string)
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
44
46
|
LOG_LEVEL_METHOD
|
45
47
|
end
|
46
|
-
|
48
|
+
|
47
49
|
private
|
48
50
|
# Implement since not implemented by Logger
|
49
51
|
def error_enabled?
|
data/lib/hornetq/server.rb
CHANGED
@@ -4,9 +4,92 @@ module HornetQ
|
|
4
4
|
def self.load_requirements
|
5
5
|
HornetQ.require_jar 'hornetq-core'
|
6
6
|
HornetQ.require_jar 'netty'
|
7
|
-
require 'hornetq/org_hornetq_core_server_hornet_q_server'
|
7
|
+
require 'hornetq/server/org_hornetq_core_server_hornet_q_server'
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.create_server(params={})
|
11
|
+
self.load_requirements
|
12
|
+
|
13
|
+
if params.kind_of?(String)
|
14
|
+
uri = HornetQ::URI.new(params)
|
15
|
+
params = uri.params
|
16
|
+
else
|
17
|
+
raise "Missing :uri param in HornetQ::Server.create_server" unless params[:uri]
|
18
|
+
uri = HornetQ::URI.new(params.delete(:uri))
|
19
|
+
# params override uri params
|
20
|
+
params = uri.params.merge(params)
|
21
|
+
end
|
22
|
+
config = Java::org.hornetq.core.config.impl.ConfigurationImpl.new
|
23
|
+
data_directory = params.delete(:data_directory) || HornetQ::DEFAULT_DATA_DIRECTORY
|
24
|
+
config.paging_directory = "#{data_directory}/paging"
|
25
|
+
config.bindings_directory = "#{data_directory}/bindings"
|
26
|
+
config.journal_directory = "#{data_directory}/journal"
|
27
|
+
config.large_messages_directory = "#{data_directory}/large-messages"
|
28
|
+
|
29
|
+
if uri.host == 'invm'
|
30
|
+
acceptor = Java::org.hornetq.api.core.TransportConfiguration.new(HornetQ::INVM_ACCEPTOR_CLASS_NAME)
|
31
|
+
config.persistence_enabled = false
|
32
|
+
config.security_enabled = false
|
33
|
+
else
|
34
|
+
acceptor = Java::org.hornetq.api.core.TransportConfiguration.new(HornetQ::NETTY_ACCEPTOR_CLASS_NAME, {'host' => uri.host, 'port' => uri.port })
|
35
|
+
connector = Java::org.hornetq.api.core.TransportConfiguration.new(HornetQ::NETTY_CONNECTOR_CLASS_NAME, {'host' => uri.host, 'port' => uri.port })
|
36
|
+
connector_conf_map = java.util.HashMap.new
|
37
|
+
connector_conf_map.put('netty-connector', connector)
|
38
|
+
config.connector_configurations = connector_conf_map
|
39
|
+
end
|
40
|
+
acceptor_conf_set = java.util.HashSet.new
|
41
|
+
acceptor_conf_set.add(acceptor)
|
42
|
+
config.acceptor_configurations = acceptor_conf_set
|
43
|
+
|
44
|
+
if Java::org.hornetq.core.journal.impl.AIOSequentialFileFactory.isSupported
|
45
|
+
config.journal_type = Java::org.hornetq.core.server.JournalType::ASYNCIO
|
46
|
+
else
|
47
|
+
require 'rbconfig'
|
48
|
+
if Config::CONFIG['target_os'] == 'linux'
|
49
|
+
HornetQ.logger("AIO wasn't located on this platform, it will fall back to using pure Java NIO. Install LibAIO to enable the AIO journal")
|
50
|
+
end
|
51
|
+
config.journal_type = Java::org.hornetq.core.server.JournalType::NIO
|
52
|
+
end
|
53
|
+
|
54
|
+
if params[:backup]
|
55
|
+
HornetQ.logger.info "Creating backup server"
|
56
|
+
config.backup = true
|
57
|
+
config.shared_store = false
|
58
|
+
elsif uri.backup_host
|
59
|
+
HornetQ.logger.info "Creating live server"
|
60
|
+
#backup_params.put('reconnectAttempts', -1)
|
61
|
+
backup_connector = Java::org.hornetq.api.core.TransportConfiguration.new(HornetQ::NETTY_CONNECTOR_CLASS_NAME, {'host' => uri.backup_host, 'port' => uri.backup_port })
|
62
|
+
connector_conf_map.put('backup-connector', backup_connector)
|
63
|
+
config.backup_connector_name = 'backup-connector'
|
64
|
+
elsif uri.host == 'invm'
|
65
|
+
HornetQ.logger.info 'Creating invm server'
|
66
|
+
else
|
67
|
+
HornetQ.logger.info 'Creating standalone server'
|
68
|
+
end
|
69
|
+
|
70
|
+
params.each_pair do |key, val|
|
71
|
+
method = key.to_s+'='
|
72
|
+
if config.respond_to? method
|
73
|
+
config.send method, val
|
74
|
+
#HornetQ.logger.debug "#{key} = #{config.send key}" if config.respond_to? key.to_sym
|
75
|
+
else
|
76
|
+
HornetQ.logger.warn "Option:#{key} class=#{key.class} with value:#{val} is invalid and being ignored"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
return Java::org.hornetq.core.server.HornetQServers.newHornetQServer(config)
|
81
|
+
end
|
82
|
+
|
83
|
+
# Start a new server instance and stop it once the supplied block completes
|
84
|
+
def self.start(params={}, &block)
|
85
|
+
server = nil
|
86
|
+
begin
|
87
|
+
server = self.create_server(params)
|
88
|
+
server.start
|
89
|
+
block.call(server)
|
90
|
+
ensure
|
91
|
+
server.stop if server
|
92
|
+
end
|
8
93
|
end
|
9
94
|
end
|
10
95
|
end
|
11
|
-
|
12
|
-
require 'hornetq/server/factory'
|
@@ -5,7 +5,7 @@ module Java::org.hornetq.core.server::HornetQServer
|
|
5
5
|
def enable_shutdown_on_signal
|
6
6
|
['HUP', 'INT', 'TERM'].each do |signal_name|
|
7
7
|
Signal.trap(signal_name) do
|
8
|
-
|
8
|
+
HornetQ.logger.info "Caught #{signal_name}, stopping server"
|
9
9
|
stop
|
10
10
|
end
|
11
11
|
end
|
data/lib/hornetq/uri.rb
CHANGED
@@ -0,0 +1,158 @@
|
|
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 'hornetq'
|
8
|
+
require 'yaml'
|
9
|
+
|
10
|
+
class ClientConnectionTest < Test::Unit::TestCase
|
11
|
+
context 'Client Connection' do
|
12
|
+
|
13
|
+
setup do
|
14
|
+
# This test requires a hornetq running local on the default port
|
15
|
+
@config = 'hornetq://localhost'
|
16
|
+
end
|
17
|
+
|
18
|
+
should 'Create Connection to the Server' do
|
19
|
+
connection = HornetQ::Client::Connection.new(@config)
|
20
|
+
#HornetQ::logger.info connection.to_s
|
21
|
+
assert_not_nil connection
|
22
|
+
connection.close
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'Create and start Connection to the Server with block' do
|
26
|
+
HornetQ::Client::Connection.connection(@config) do |connection|
|
27
|
+
assert_not_nil connection
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
should 'Create and start Connection to the Server with block and start one session' do
|
32
|
+
HornetQ::Client::Connection.session(@config) do |session|
|
33
|
+
assert_not_nil session
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
should 'Start and stop connection' do
|
38
|
+
# Connection is started when created
|
39
|
+
connection = HornetQ::Client::Connection.new(@config)
|
40
|
+
assert_not_nil connection
|
41
|
+
assert_nil connection.close
|
42
|
+
end
|
43
|
+
|
44
|
+
should 'Create a session from the connection' do
|
45
|
+
connection = HornetQ::Client::Connection.new(@config)
|
46
|
+
session = connection.create_session
|
47
|
+
assert_not_nil session
|
48
|
+
|
49
|
+
assert_nil session.start
|
50
|
+
|
51
|
+
assert_equal session.auto_commit_acks?, true
|
52
|
+
assert_equal session.auto_commit_sends?, true
|
53
|
+
assert_equal session.block_on_acknowledge?, false
|
54
|
+
assert_equal session.closed?, false
|
55
|
+
assert_equal session.rollback_only?, false
|
56
|
+
assert_equal session.xa?, false
|
57
|
+
|
58
|
+
assert_nil session.stop
|
59
|
+
|
60
|
+
# Close the session
|
61
|
+
assert_nil session.close
|
62
|
+
assert_equal session.closed?, true
|
63
|
+
|
64
|
+
assert_nil connection.close
|
65
|
+
end
|
66
|
+
|
67
|
+
should 'Create a session with a block' do
|
68
|
+
connection = HornetQ::Client::Connection.new(@config)
|
69
|
+
|
70
|
+
connection.session do |session|
|
71
|
+
assert_not_nil session
|
72
|
+
assert_equal session.auto_commit_acks?, true
|
73
|
+
assert_equal session.auto_commit_sends?, true
|
74
|
+
assert_equal session.block_on_acknowledge?, false
|
75
|
+
assert_equal session.rollback_only?, false
|
76
|
+
|
77
|
+
assert_equal session.xa?, false
|
78
|
+
assert_equal session.closed?, false
|
79
|
+
end
|
80
|
+
|
81
|
+
assert_nil connection.close
|
82
|
+
end
|
83
|
+
|
84
|
+
should 'create a session without a block and throw exception' do
|
85
|
+
connection = HornetQ::Client::Connection.new(@config)
|
86
|
+
|
87
|
+
assert_raise(RuntimeError) { connection.session }
|
88
|
+
|
89
|
+
assert_nil connection.close
|
90
|
+
end
|
91
|
+
|
92
|
+
# should 'Create a session from the connection with params' do
|
93
|
+
# connection = HornetQ::Client::Connection.new(@config)
|
94
|
+
#
|
95
|
+
# session_parms = {
|
96
|
+
# :transacted => true,
|
97
|
+
# :options => javax.jms.Session::AUTO_ACKNOWLEDGE
|
98
|
+
# }
|
99
|
+
#
|
100
|
+
# session = connection.create_session(session_parms)
|
101
|
+
# assert_not_nil session
|
102
|
+
# assert_equal session.transacted?, true
|
103
|
+
# # When session is transacted, options are ignore, so ack mode must be transacted
|
104
|
+
# assert_equal session.acknowledge_mode, javax.jms.Session::SESSION_TRANSACTED
|
105
|
+
# assert_nil session.close
|
106
|
+
#
|
107
|
+
# assert_nil connection.stop
|
108
|
+
# assert_nil connection.close
|
109
|
+
# end
|
110
|
+
#
|
111
|
+
# should 'Create a session from the connection with block and params' do
|
112
|
+
# HornetQ::Client::Connection.start_session(@config) do |connection|
|
113
|
+
#
|
114
|
+
# session_parms = {
|
115
|
+
# :transacted => true,
|
116
|
+
# :options => javax.jms.Session::CLIENT_ACKNOWLEDGE
|
117
|
+
# }
|
118
|
+
#
|
119
|
+
# connection.session(session_parms) do |session|
|
120
|
+
# assert_not_nil session
|
121
|
+
# assert_equal session.transacted?, true
|
122
|
+
# # When session is transacted, options are ignore, so ack mode must be transacted
|
123
|
+
# assert_equal session.acknowledge_mode, javax.jms.Session::SESSION_TRANSACTED
|
124
|
+
# end
|
125
|
+
# end
|
126
|
+
# end
|
127
|
+
#
|
128
|
+
# should 'Create a session from the connection with block and params opposite test' do
|
129
|
+
# HornetQ::Client::Connection.start_session(@config) do |connection|
|
130
|
+
#
|
131
|
+
# session_parms = {
|
132
|
+
# :transacted => false,
|
133
|
+
# :options => javax.jms.Session::AUTO_ACKNOWLEDGE
|
134
|
+
# }
|
135
|
+
#
|
136
|
+
# connection.session(session_parms) do |session|
|
137
|
+
# assert_not_nil session
|
138
|
+
# assert_equal session.transacted?, false
|
139
|
+
# assert_equal session.acknowledge_mode, javax.jms.Session::AUTO_ACKNOWLEDGE
|
140
|
+
# end
|
141
|
+
# end
|
142
|
+
# end
|
143
|
+
#
|
144
|
+
# context 'HornetQ::Client Connection additional capabilities' do
|
145
|
+
#
|
146
|
+
# should 'start an on_message handler' do
|
147
|
+
# HornetQ::Client::Connection.start_session(@config) do |connection|
|
148
|
+
# value = nil
|
149
|
+
# connection.on_message(:transacted => true, :queue_name => :temporary) do |message|
|
150
|
+
# value = "received"
|
151
|
+
# end
|
152
|
+
# end
|
153
|
+
# end
|
154
|
+
#
|
155
|
+
# end
|
156
|
+
|
157
|
+
end
|
158
|
+
end
|