jruby-hornetq 0.2.0.alpha → 0.2.1.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 +8 -0
- data/README.md +88 -5
- data/Rakefile +4 -4
- data/bin/hornetq_server +26 -55
- data/examples/{batch_client.rb → client/advanced/batch_client.rb} +11 -4
- data/examples/{client.rb → client/advanced/client.rb} +8 -10
- data/examples/{consumer.rb → client/advanced/consumer.rb} +2 -2
- data/examples/{hornetq.yml → client/advanced/hornetq.yml} +11 -10
- data/examples/{multi_client.rb → client/advanced/multi_client.rb} +6 -3
- data/examples/{multi_consumer.rb → client/advanced/multi_consumer.rb} +2 -2
- data/examples/{producer.rb → client/advanced/producer.rb} +3 -4
- data/examples/{server.rb → client/advanced/server.rb} +6 -9
- data/examples/client/client.rb +31 -0
- data/examples/client/consumer.rb +22 -0
- data/examples/client/invm.rb +38 -0
- data/examples/client/producer.rb +21 -0
- data/examples/client/server.rb +31 -0
- data/examples/server/backup_server.yml +6 -0
- data/examples/server/live_server.yml +1 -0
- data/examples/server/standalone_server.yml +1 -0
- data/lib/data/bindings/hornetq-bindings-1.bindings +0 -0
- data/lib/data/bindings/hornetq-bindings-2.bindings +0 -0
- data/lib/hornetq.rb +30 -9
- data/lib/hornetq/client.rb +19 -0
- data/lib/hornetq/{hornet_q_client.rb → client/factory.rb} +85 -88
- data/lib/hornetq/{org_hornetq_api_core_client_client_session.rb → client/org_hornetq_api_core_client_client_session.rb} +2 -2
- data/lib/hornetq/{org_hornetq_core_client_impl_client_message_impl.rb → client/org_hornetq_core_client_impl_client_message_impl.rb} +62 -2
- data/lib/hornetq/{org_hornetq_core_client_impl_client_producer_impl.rb → client/org_hornetq_core_client_impl_client_producer_impl.rb} +0 -0
- data/lib/hornetq/{org_hornetq_utils_typed_properties.rb → client/org_hornetq_utils_typed_properties.rb} +0 -0
- data/lib/hornetq/{client_requestor.rb → client/requestor.rb} +2 -2
- data/lib/hornetq/{client_server.rb → client/server.rb} +2 -2
- data/lib/hornetq/{session_pool.rb → client/session_pool.rb} +20 -20
- data/lib/hornetq/{lib → java}/hornetq-core-client.jar +0 -0
- data/lib/hornetq/{lib → java}/hornetq-core.jar +0 -0
- data/lib/hornetq/{lib → java}/netty.jar +0 -0
- data/lib/hornetq/org_hornetq_core_server_hornet_q_server.rb +13 -0
- data/lib/hornetq/server.rb +12 -0
- data/lib/hornetq/server/factory.rb +86 -0
- data/lib/hornetq/uri.rb +59 -0
- data/test/server_factory_test.rb +184 -0
- data/test/uri_test.rb +74 -0
- metadata +44 -28
- data/examples/backup_server.yml +0 -4
- data/examples/live_server.yml +0 -5
- data/examples/run_broker.rb +0 -59
- data/examples/standalone_server.yml +0 -3
@@ -4,7 +4,7 @@
|
|
4
4
|
#
|
5
5
|
|
6
6
|
# Allow examples to be run in-place without requiring a gem install
|
7
|
-
$LOAD_PATH.unshift File.dirname(__FILE__) + '
|
7
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../../lib'
|
8
8
|
|
9
9
|
require 'rubygems'
|
10
10
|
require 'yaml'
|
@@ -15,22 +15,19 @@ timeout = (ARGV[0] || 60000).to_i
|
|
15
15
|
config = YAML.load_file(File.dirname(__FILE__) + '/hornetq.yml')['development']
|
16
16
|
|
17
17
|
# Create a HornetQ session
|
18
|
-
|
18
|
+
HornetQ::Client::Factory.create_session(config) do |session|
|
19
19
|
server = session.create_server('jms.queue.ExampleQueue', timeout)
|
20
20
|
session.start
|
21
21
|
|
22
22
|
count = 0
|
23
23
|
start_time = Time.now
|
24
|
+
puts "Server started and waiting for requests ..."
|
24
25
|
server.run do |request_message|
|
25
|
-
count
|
26
|
-
|
27
|
-
text = request_message.body
|
28
|
-
#p text
|
29
|
-
#p request_message
|
30
|
-
#print "."
|
26
|
+
count += 1
|
27
|
+
print '.'
|
31
28
|
puts "#{count}" if count%1000 == 0
|
32
29
|
puts "Durable" if request_message.durable
|
33
|
-
reply_message = session.create_message(
|
30
|
+
reply_message = session.create_message(HornetQ::Client::Message::TEXT_TYPE, false)
|
34
31
|
reply_message << "Test Response"
|
35
32
|
reply_message
|
36
33
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Requestor:
|
3
|
+
# Submit a request and wait for a reply
|
4
|
+
#
|
5
|
+
|
6
|
+
# Allow examples to be run in-place without requiring a gem install
|
7
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
8
|
+
|
9
|
+
require 'rubygems'
|
10
|
+
require 'hornetq'
|
11
|
+
|
12
|
+
timeout = (ARGV[0] || 5000).to_i
|
13
|
+
|
14
|
+
HornetQ::Client::Factory.start(:connector=> {:uri => 'hornetq://localhost'}) do |session|
|
15
|
+
requestor = session.create_requestor('jms.queue.ExampleQueue')
|
16
|
+
|
17
|
+
# Create non-durable message
|
18
|
+
message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
|
19
|
+
message.body = "Request Current Time"
|
20
|
+
|
21
|
+
# Send message to the queue
|
22
|
+
puts "Send request message and wait for Reply"
|
23
|
+
if reply = requestor.request(message, timeout)
|
24
|
+
puts "Received Response: #{reply.inspect}"
|
25
|
+
puts " Message: #{reply.body.inspect}"
|
26
|
+
else
|
27
|
+
puts "Time out, No reply received after #{timeout/1000} seconds"
|
28
|
+
end
|
29
|
+
|
30
|
+
requestor.close
|
31
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Consumer:
|
3
|
+
# Write a single message to the queue
|
4
|
+
#
|
5
|
+
|
6
|
+
# Allow examples to be run in-place without requiring a gem install
|
7
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
8
|
+
|
9
|
+
require 'rubygems'
|
10
|
+
require 'hornetq'
|
11
|
+
|
12
|
+
HornetQ::Client::Factory.start(:connector=> {:uri => 'hornetq://localhost'}) do |session|
|
13
|
+
consumer = session.create_consumer('jms.queue.ExampleQueue')
|
14
|
+
|
15
|
+
# Receive a single message, return immediately if no message available
|
16
|
+
if message = consumer.receive_immediate
|
17
|
+
puts "Received:[#{message.body}]"
|
18
|
+
message.acknowledge
|
19
|
+
else
|
20
|
+
puts "No message found"
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ In VM Producer and consumer:
|
3
|
+
# Example of how to produce and consume messages with the same Java VM
|
4
|
+
#
|
5
|
+
|
6
|
+
# Allow examples to be run in-place without requiring a gem install
|
7
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
8
|
+
|
9
|
+
require 'rubygems'
|
10
|
+
require 'hornetq'
|
11
|
+
|
12
|
+
# Create and start an InVM HornetQ server instance
|
13
|
+
HornetQ::Server::Factory.start('hornetq://invm') do |server|
|
14
|
+
# Allow a CTRL-C to stop this process
|
15
|
+
server.enable_shutdown_on_signal
|
16
|
+
|
17
|
+
HornetQ::Client::Factory.start('hornetq://invm') do |session|
|
18
|
+
session.create_queue("MyAddress","MyQueue", nil, false)
|
19
|
+
|
20
|
+
producer = session.create_producer('MyAddress')
|
21
|
+
consumer = session.create_consumer('MyQueue')
|
22
|
+
|
23
|
+
# Create a non-durable message to send
|
24
|
+
message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
|
25
|
+
message << "#{Time.now}: ### Hello, World ###"
|
26
|
+
|
27
|
+
producer.send(message)
|
28
|
+
|
29
|
+
|
30
|
+
# Receive a single message, return immediately if no message available
|
31
|
+
if message = consumer.receive_immediate
|
32
|
+
puts "Received:[#{message.body}]"
|
33
|
+
message.acknowledge
|
34
|
+
else
|
35
|
+
puts "No message found"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Producer:
|
3
|
+
# Write messages to the queue
|
4
|
+
#
|
5
|
+
|
6
|
+
# Allow examples to be run in-place without requiring a gem install
|
7
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
8
|
+
|
9
|
+
require 'rubygems'
|
10
|
+
require 'hornetq'
|
11
|
+
|
12
|
+
HornetQ::Client::Factory.create_session(:connector=> {:uri => 'hornetq://localhost'}) do |session|
|
13
|
+
# Create Producer so that we can send messages to the Address 'jms.queue.ExampleQueue'
|
14
|
+
producer = session.create_producer('jms.queue.ExampleQueue')
|
15
|
+
|
16
|
+
# Create a non-durable message to send
|
17
|
+
message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
|
18
|
+
message << "#{Time.now}: ### Hello, World ###"
|
19
|
+
|
20
|
+
producer.send(message)
|
21
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Consumer:
|
3
|
+
# Reply to a request
|
4
|
+
#
|
5
|
+
|
6
|
+
# Allow examples to be run in-place without requiring a gem install
|
7
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
8
|
+
|
9
|
+
require 'rubygems'
|
10
|
+
require 'hornetq'
|
11
|
+
|
12
|
+
timeout = (ARGV[0] || 60000).to_i
|
13
|
+
|
14
|
+
HornetQ::Client::Factory.start(:connector=> {:uri => 'hornetq://localhost'}) do |session|
|
15
|
+
server = session.create_server('jms.queue.ExampleQueue', timeout)
|
16
|
+
|
17
|
+
puts "Waiting for Requests..."
|
18
|
+
server.run do |request_message|
|
19
|
+
puts "Received:[#{request_message.body}]"
|
20
|
+
|
21
|
+
# Create Reply Message
|
22
|
+
reply_message = session.create_message(HornetQ::Client::Message::TEXT_TYPE, false)
|
23
|
+
reply_message.body = "Echo [#{request_message.body}]"
|
24
|
+
|
25
|
+
# The result of the block is the message to be sent back
|
26
|
+
reply_message
|
27
|
+
end
|
28
|
+
|
29
|
+
# Server will stop after timeout period after no messages received. Set to 0 to wait foreve
|
30
|
+
server.close
|
31
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
uri: hornetq://0.0.0.0:5445,localhost:5446/?data_directory=./data
|
@@ -0,0 +1 @@
|
|
1
|
+
uri: hornetq://0.0.0.0/?data_directory=./data
|
Binary file
|
Binary file
|
data/lib/hornetq.rb
CHANGED
@@ -1,9 +1,30 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require 'hornetq/
|
4
|
-
require 'hornetq/
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
include Java
|
2
|
+
require 'hornetq/server'
|
3
|
+
require 'hornetq/client'
|
4
|
+
require 'hornetq/uri'
|
5
|
+
|
6
|
+
module HornetQ
|
7
|
+
|
8
|
+
# Netty Class name
|
9
|
+
NETTY_CONNECTOR_CLASS_NAME = 'org.hornetq.core.remoting.impl.netty.NettyConnectorFactory'
|
10
|
+
NETTY_ACCEPTOR_CLASS_NAME = 'org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory'
|
11
|
+
INVM_CONNECTOR_CLASS_NAME = 'org.hornetq.core.remoting.impl.invm.InVMConnectorFactory'
|
12
|
+
INVM_ACCEPTOR_CLASS_NAME = 'org.hornetq.core.remoting.impl.invm.InVMAcceptorFactory'
|
13
|
+
|
14
|
+
DEFAULT_NETTY_PORT = java.lang.Integer.new(5445)
|
15
|
+
DEFAULT_DATA_DIRECTORY = './data'
|
16
|
+
|
17
|
+
# Allow override of our included jars so we don't have to keep up with hornetq releases
|
18
|
+
def self.require_jar(jar_name)
|
19
|
+
if ENV['HORNETQ_HOME']
|
20
|
+
require "#{ENV['HORNETQ_HOME']}/lib/#{jar_name}.jar"
|
21
|
+
else
|
22
|
+
require "hornetq/java/#{jar_name}.jar"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.netty_port(port)
|
27
|
+
port ||= DEFAULT_NETTY_PORT
|
28
|
+
return java.lang.Integer.new(port)
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module HornetQ
|
2
|
+
module Client
|
3
|
+
# Only load as needed
|
4
|
+
def self.load_requirements
|
5
|
+
HornetQ.require_jar 'hornetq-core-client'
|
6
|
+
HornetQ.require_jar 'netty'
|
7
|
+
require 'hornetq/client/org_hornetq_api_core_client_client_session'
|
8
|
+
require 'hornetq/client/org_hornetq_core_client_impl_client_message_impl'
|
9
|
+
require 'hornetq/client/org_hornetq_utils_typed_properties'
|
10
|
+
|
11
|
+
# Import Message Constants
|
12
|
+
import Java::org.hornetq.api.core::Message
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'hornetq/client/factory'
|
18
|
+
require 'hornetq/client/requestor'
|
19
|
+
require 'hornetq/client/server'
|
@@ -1,14 +1,6 @@
|
|
1
1
|
require 'uri'
|
2
2
|
|
3
|
-
module
|
4
|
-
|
5
|
-
# Import Message Constants
|
6
|
-
import Java::org.hornetq.api.core.Message
|
7
|
-
|
8
|
-
# Netty Class name
|
9
|
-
NETTY_CLASS_NAME ='org.hornetq.core.remoting.impl.netty.NettyConnectorFactory'
|
10
|
-
INVM_CLASS_NAME = 'org.hornetq.core.remoting.impl.invm.InVMAcceptorFactory'
|
11
|
-
DEFAULT_NETTY_PORT = 5445
|
3
|
+
module HornetQ::Client
|
12
4
|
|
13
5
|
class Factory
|
14
6
|
# Create a new Factory from which sessions can be created
|
@@ -16,7 +8,7 @@ module HornetQClient
|
|
16
8
|
# Parameters:
|
17
9
|
# * a Hash consisting of one or more of the named parameters
|
18
10
|
# * Summary of parameters and their default values
|
19
|
-
#
|
11
|
+
# HornetQ::Client::Factory.new(
|
20
12
|
# :uri => 'hornetq://localhost',
|
21
13
|
# :ack_batch_size => ,
|
22
14
|
# :auto_group => ,
|
@@ -106,75 +98,59 @@ module HornetQClient
|
|
106
98
|
# * :thread_pool_max_size
|
107
99
|
# * :use_global_pools
|
108
100
|
|
109
|
-
def initialize(
|
110
|
-
|
101
|
+
def initialize(params={})
|
102
|
+
HornetQ::Client.load_requirements
|
103
|
+
uri = nil
|
111
104
|
# TODO: Support :uri as an array for cluster configurations
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
host, port = host.split(':')
|
121
|
-
backup_host, backup_port = backup_host.split(':')
|
122
|
-
end
|
123
|
-
|
124
|
-
# Extract settings passed in query
|
125
|
-
settings = {}
|
126
|
-
if query
|
127
|
-
query.split(';').each do |i|
|
128
|
-
key, value = i.split('=')
|
129
|
-
settings[key] = value
|
130
|
-
end
|
105
|
+
if params.kind_of?(String)
|
106
|
+
uri = HornetQ::URI.new(params)
|
107
|
+
params = uri.params
|
108
|
+
else
|
109
|
+
raise "Missing :uri param in HornetQ::Server.create_server" unless params[:uri]
|
110
|
+
uri = HornetQ::URI.new(params.delete(:uri))
|
111
|
+
# params override uri params
|
112
|
+
params = uri.params.merge(params)
|
131
113
|
end
|
132
|
-
|
133
|
-
|
134
|
-
factory = nil
|
114
|
+
|
115
|
+
@factory = nil
|
135
116
|
# In-VM Transport has no fail-over or additional parameters
|
136
|
-
if host == 'invm'
|
137
|
-
transport = Java::org.hornetq.api.core.TransportConfiguration.new(
|
138
|
-
factory = Java::org.hornetq.api.core.client.HornetQClient.create_client_session_factory(transport)
|
139
|
-
elsif
|
117
|
+
if uri.host == 'invm'
|
118
|
+
transport = Java::org.hornetq.api.core.TransportConfiguration.new(HornetQ::INVM_CONNECTOR_CLASS_NAME)
|
119
|
+
@factory = Java::org.hornetq.api.core.client.HornetQClient.create_client_session_factory(transport)
|
120
|
+
elsif params[:protocol]
|
140
121
|
# Auto-Discovery just has a host name and port
|
141
|
-
if
|
142
|
-
factory = Java::org.hornetq.api.core.client.HornetQClient.create_client_session_factory(host, port)
|
143
|
-
elsif
|
144
|
-
raise "Unknown HornetQ protocol:#{
|
122
|
+
if params[:protocol] == 'discovery'
|
123
|
+
@factory = Java::org.hornetq.api.core.client.HornetQClient.create_client_session_factory(uri.host, uri.port)
|
124
|
+
elsif params[:protocol] != 'netty'
|
125
|
+
raise "Unknown HornetQ protocol:#{params[:protocol]}"
|
145
126
|
end
|
146
127
|
end
|
147
128
|
|
148
129
|
# Unless already created, then the factory will use the netty protocol
|
149
|
-
unless factory
|
130
|
+
unless @factory
|
150
131
|
# Primary Transport
|
151
|
-
|
152
|
-
port ||= DEFAULT_NETTY_PORT
|
153
|
-
transport = Java::org.hornetq.api.core.TransportConfiguration.new(NETTY_CLASS_NAME, {'host' => host, 'port' => Java::java.lang.Integer.new(port)})
|
132
|
+
transport = Java::org.hornetq.api.core.TransportConfiguration.new(HornetQ::NETTY_CONNECTOR_CLASS_NAME, {'host' => uri.host, 'port' => uri.port })
|
154
133
|
|
155
134
|
# Check for backup server connection information
|
156
|
-
if backup_host
|
157
|
-
backup_port
|
158
|
-
|
159
|
-
factory = Java::org.hornetq.api.core.client.HornetQClient.create_client_session_factory(transport, backup_transport)
|
135
|
+
if uri.backup_host
|
136
|
+
backup_transport = Java::org.hornetq.api.core.TransportConfiguration.new(HornetQ::NETTY_CONNECTOR_CLASS_NAME, {'host' => uri.backup_host, 'port' => uri.backup_port })
|
137
|
+
@factory = Java::org.hornetq.api.core.client.HornetQClient.create_client_session_factory(transport, backup_transport)
|
160
138
|
else
|
161
|
-
factory = Java::org.hornetq.api.core.client.HornetQClient.create_client_session_factory(transport)
|
139
|
+
@factory = Java::org.hornetq.api.core.client.HornetQClient.create_client_session_factory(transport)
|
162
140
|
end
|
163
141
|
end
|
164
142
|
|
165
143
|
# If any other options were supplied, apply them to the created Factory instance
|
166
|
-
|
144
|
+
params.each_pair do |key, val|
|
167
145
|
next if key == :uri
|
168
146
|
method = key.to_s+'='
|
169
|
-
if factory.respond_to? method
|
170
|
-
factory.send method, val
|
171
|
-
#puts "Debug: #{key} = #{factory.send key}" if factory.respond_to? key.to_sym
|
147
|
+
if @factory.respond_to? method
|
148
|
+
@factory.send method, val
|
149
|
+
#puts "Debug: #{key} = #{@factory.send key}" if @factory.respond_to? key.to_sym
|
172
150
|
else
|
173
151
|
puts "Warning: Option:#{key}, with value:#{val} is invalid and being ignored"
|
174
152
|
end
|
175
153
|
end
|
176
|
-
|
177
|
-
@factory = factory
|
178
154
|
end
|
179
155
|
|
180
156
|
# Create a new HornetQ session
|
@@ -188,14 +164,14 @@ module HornetQClient
|
|
188
164
|
#
|
189
165
|
# Note:
|
190
166
|
# * The returned session MUST be closed once complete
|
191
|
-
# factory =
|
167
|
+
# factory = HornetQ::Client::Factory.new(:uri => 'hornetq://localhost/')
|
192
168
|
# session = factory.create_session
|
193
169
|
# ...
|
194
170
|
# session.close
|
195
171
|
# factory.close
|
196
|
-
# * It is recommended to rather call
|
172
|
+
# * It is recommended to rather call HornetQ::Client::Factory.create_session
|
197
173
|
# so that all resouces are closed automatically
|
198
|
-
#
|
174
|
+
# HornetQ::Client::Factory.create_session(:uri => 'hornetq://localhost/') do |session|
|
199
175
|
# ...
|
200
176
|
# end
|
201
177
|
#
|
@@ -212,7 +188,7 @@ module HornetQClient
|
|
212
188
|
#
|
213
189
|
# factory = nil
|
214
190
|
# begin
|
215
|
-
# factory =
|
191
|
+
# factory = HornetQ::Client::Factory.new(:uri => 'hornetq://localhost/')
|
216
192
|
# factory.create_session do |session|
|
217
193
|
#
|
218
194
|
# # Create a new queue
|
@@ -222,7 +198,7 @@ module HornetQClient
|
|
222
198
|
# producer = session.create_producer('Example')
|
223
199
|
#
|
224
200
|
# # Create a Text Message
|
225
|
-
# message = session.create_message(
|
201
|
+
# message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,true)
|
226
202
|
# message << 'Hello World'
|
227
203
|
#
|
228
204
|
# # Send the message
|
@@ -238,7 +214,7 @@ module HornetQClient
|
|
238
214
|
# factory = nil
|
239
215
|
# session = nil
|
240
216
|
# begin
|
241
|
-
# factory =
|
217
|
+
# factory = HornetQ::Client::Factory.new(:uri => 'hornetq://localhost/')
|
242
218
|
# session = factory.create_session
|
243
219
|
#
|
244
220
|
# # Create a new queue
|
@@ -248,7 +224,7 @@ module HornetQClient
|
|
248
224
|
# producer = session.create_producer('Example')
|
249
225
|
#
|
250
226
|
# # Create a Text Message
|
251
|
-
# message = session.create_message(
|
227
|
+
# message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,true)
|
252
228
|
# message.body_buffer.write_string('Hello World')
|
253
229
|
#
|
254
230
|
# # Send the message
|
@@ -304,21 +280,20 @@ module HornetQClient
|
|
304
280
|
# * :ack_batch_size
|
305
281
|
# * the batch size of the acknowledgements
|
306
282
|
#
|
307
|
-
def create_session(
|
308
|
-
raise "
|
283
|
+
def create_session(params={}, &proc)
|
284
|
+
raise "HornetQ::Client::Factory Already Closed" unless @factory
|
309
285
|
if proc
|
310
286
|
session = nil
|
311
287
|
result = nil
|
312
288
|
begin
|
313
|
-
#session = @factory.create_session(true, true)
|
314
289
|
session = @factory.create_session(
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
290
|
+
params[:username],
|
291
|
+
params[:password],
|
292
|
+
params[:xa] || false,
|
293
|
+
params[:auto_commit_sends].nil? ? true : params[:auto_commit_sends],
|
294
|
+
params[:auto_commit_acks].nil? ? true : params[:auto_commit_acks],
|
295
|
+
params[:pre_acknowledge] || false,
|
296
|
+
params[:ack_batch_size] || 1)
|
322
297
|
result = proc.call(session)
|
323
298
|
ensure
|
324
299
|
session.close if session
|
@@ -326,19 +301,21 @@ module HornetQClient
|
|
326
301
|
result
|
327
302
|
else
|
328
303
|
@factory.create_session(
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
304
|
+
params[:username],
|
305
|
+
params[:password],
|
306
|
+
params[:xa] || false,
|
307
|
+
params[:auto_commit_sends].nil? ? true : params[:auto_commit_sends],
|
308
|
+
params[:auto_commit_acks].nil? ? true : params[:auto_commit_acks],
|
309
|
+
params[:pre_acknowledge] || false,
|
310
|
+
params[:ack_batch_size] || 1)
|
336
311
|
end
|
337
312
|
end
|
338
313
|
|
339
314
|
# Create a Session pool
|
340
|
-
|
341
|
-
|
315
|
+
# TODO Raise an exception when gene_pool is not available
|
316
|
+
def create_session_pool(params={})
|
317
|
+
require 'hornetq/client/session_pool'
|
318
|
+
SessionPool.new(self, params)
|
342
319
|
end
|
343
320
|
|
344
321
|
# Close Factory connections
|
@@ -353,29 +330,49 @@ module HornetQClient
|
|
353
330
|
# block. Upon completion the session and factory are both closed
|
354
331
|
# See Factory::initialize and Factory::create_session for the list
|
355
332
|
# of parameters
|
356
|
-
def self.create_session(
|
333
|
+
def self.create_session(params={},&proc)
|
357
334
|
raise "Missing mandatory code block" unless proc
|
358
335
|
factory = nil
|
359
336
|
session = nil
|
360
337
|
begin
|
361
|
-
|
362
|
-
|
338
|
+
if params.kind_of?(String)
|
339
|
+
# TODO: Support passing username and password from URI to Session
|
340
|
+
factory = self.new(params)
|
341
|
+
session = factory.create_session({}, &proc)
|
342
|
+
else
|
343
|
+
factory = self.new(params[:connector] || {})
|
344
|
+
session = factory.create_session(params[:session] || {}, &proc)
|
345
|
+
end
|
363
346
|
ensure
|
347
|
+
session.close if session
|
364
348
|
factory.close if factory
|
365
349
|
end
|
366
350
|
end
|
367
351
|
|
352
|
+
# Create a new Factory along with a Session, and then start the session
|
353
|
+
#
|
354
|
+
# Creates a new factory and session, then passes the session to the supplied
|
355
|
+
# block. Upon completion the session and factory are both closed
|
356
|
+
# See Factory::initialize and Factory::create_session for the list
|
357
|
+
# of parameters
|
358
|
+
def self.start(params={},&proc)
|
359
|
+
create_session(params) do |session|
|
360
|
+
session.start
|
361
|
+
proc.call(session)
|
362
|
+
end
|
363
|
+
end
|
364
|
+
|
368
365
|
# Call the supplied code block after creating a factory instance
|
369
366
|
# See initialize for the parameter list
|
370
367
|
# The factory is closed before returning
|
371
368
|
#
|
372
369
|
# Returns the result of the code block
|
373
|
-
def self.create_factory(
|
370
|
+
def self.create_factory(params={}, &proc)
|
374
371
|
raise "Missing mandatory code block" unless proc
|
375
372
|
factory = nil
|
376
373
|
result = nil
|
377
374
|
begin
|
378
|
-
factory=self.new(
|
375
|
+
factory=self.new(params)
|
379
376
|
result = proc.call(factory)
|
380
377
|
ensure
|
381
378
|
factory.close
|