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
@@ -0,0 +1,71 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Requestor:
|
3
|
+
# Multithreaded clients all doing requests
|
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 'yaml'
|
11
|
+
require 'hornetq'
|
12
|
+
|
13
|
+
timeout = (ARGV[0] || 30000).to_i
|
14
|
+
thread_count = (ARGV[1] || 2).to_i
|
15
|
+
request_count = (ARGV[2] || 5).to_i
|
16
|
+
|
17
|
+
config = YAML.load_file(File.dirname(__FILE__) + '/hornetq.yml')['development']
|
18
|
+
|
19
|
+
# Sample thread that does some work and then does a request-response call
|
20
|
+
def worker_thread(id, connection, timeout, request_count)
|
21
|
+
begin
|
22
|
+
connection.start_session do |session|
|
23
|
+
start_time = Time.now
|
24
|
+
|
25
|
+
# Use Requestor (Client) Pattern to do a "RPC like" call to a server
|
26
|
+
# Under the covers the requestor creates a temporary dynamic reply to queue
|
27
|
+
# for the server to send the reply message to
|
28
|
+
session.requestor('ServerAddress') do |requestor|
|
29
|
+
# Create non-durable message
|
30
|
+
puts "Sending #{request_count} requests"
|
31
|
+
(1..request_count).each do |i|
|
32
|
+
message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
|
33
|
+
message.body = "Some request data"
|
34
|
+
# Set the user managed message id
|
35
|
+
message.user_id = Java::org.hornetq.utils::UUIDGenerator.getInstance.generateUUID
|
36
|
+
|
37
|
+
if reply = requestor.request(message, timeout)
|
38
|
+
puts "Thread[#{id}]:Received Response: #{reply.inspect}" if request_count < 10
|
39
|
+
puts "Thread[#{id}]: Message:[#{reply.body.inspect}]" if request_count < 10
|
40
|
+
print ".#{id}" if request_count >= 10
|
41
|
+
else
|
42
|
+
puts "Thread[#{id}]:Time out, No reply received after #{timeout/1000} seconds"
|
43
|
+
end
|
44
|
+
puts "Thread:#{id}=>#{i}" if i%1000 == 0
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
duration = Time.now - start_time
|
49
|
+
puts "\nThread[#{id}]:Made #{request_count} calls in #{duration} seconds at #{request_count/duration} synchronous requests per second"
|
50
|
+
end
|
51
|
+
|
52
|
+
rescue Exception => exc
|
53
|
+
puts "Thread[#{id}]: Terminating due to Exception:#{exc.inspect}"
|
54
|
+
puts exc.backtrace
|
55
|
+
end
|
56
|
+
puts "Thread[#{id}]: Complete"
|
57
|
+
end
|
58
|
+
|
59
|
+
# Create a HornetQ Connection
|
60
|
+
HornetQ::Client::Connection.connection(config[:connection]) do |connection|
|
61
|
+
threads = []
|
62
|
+
|
63
|
+
# Start threads passing in an id and the connection so that the thread
|
64
|
+
# can create its own session
|
65
|
+
thread_count.times do |i|
|
66
|
+
threads << Thread.new { worker_thread(i, connection, timeout, request_count) }
|
67
|
+
end
|
68
|
+
# Since each thread will terminate once it has completed its required number
|
69
|
+
# of requests, we can just wait for all the threads to terminate
|
70
|
+
threads.each {|t| t.join}
|
71
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Producer:
|
3
|
+
# Write messages to the queue
|
4
|
+
# This example will display the message count after every 1000
|
5
|
+
# messages written to the address
|
6
|
+
#
|
7
|
+
|
8
|
+
# Allow examples to be run in-place without requiring a gem install
|
9
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
10
|
+
|
11
|
+
require 'rubygems'
|
12
|
+
require 'yaml'
|
13
|
+
require 'hornetq'
|
14
|
+
|
15
|
+
count = (ARGV[0] || 1).to_i
|
16
|
+
config = YAML.load_file(File.dirname(__FILE__) + '/hornetq.yml')['development']
|
17
|
+
|
18
|
+
# Create a HornetQ session
|
19
|
+
HornetQ::Client::Connection.session(config) do |session|
|
20
|
+
# Create a non-durable TestQueue to receive messages sent to the TestAddress
|
21
|
+
session.create_queue_ignore_exists('TestAddress', 'TestQueue', false)
|
22
|
+
start_time = Time.now
|
23
|
+
|
24
|
+
session.producer('TestAddress') do |producer|
|
25
|
+
puts "Sending messages"
|
26
|
+
(1..count).each do |i|
|
27
|
+
message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
|
28
|
+
message.body = "#{Time.now}: ### Hello, World ###"
|
29
|
+
|
30
|
+
producer.send(message)
|
31
|
+
puts "#{i}\n" if i%1000 == 0
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
duration = Time.now - start_time
|
36
|
+
puts "Delivered #{count} messages in #{duration} seconds at #{count/duration} messages per second"
|
37
|
+
end
|
@@ -0,0 +1,44 @@
|
|
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 'yaml'
|
11
|
+
require 'hornetq'
|
12
|
+
|
13
|
+
timeout = (ARGV[0] || 60000).to_i
|
14
|
+
|
15
|
+
config = YAML.load_file(File.dirname(__FILE__) + '/hornetq.yml')['development']
|
16
|
+
|
17
|
+
# Create a HornetQ session
|
18
|
+
HornetQ::Client::Connection.start_session(config) do |session|
|
19
|
+
# Create a non-durable ServerQueue to receive messages sent to the ServerAddress
|
20
|
+
session.create_queue_ignore_exists('ServerAddress', 'ServerQueue', false)
|
21
|
+
|
22
|
+
count = 0
|
23
|
+
start_time = Time.now
|
24
|
+
|
25
|
+
session.server('ServerQueue', timeout) do |server|
|
26
|
+
puts "Server started and waiting for requests ..."
|
27
|
+
server.run do |request_message|
|
28
|
+
count += 1
|
29
|
+
print '.'
|
30
|
+
puts "#{count}" if count%1000 == 0
|
31
|
+
|
32
|
+
# Create Reply Message
|
33
|
+
reply_message = session.create_message(HornetQ::Client::Message::TEXT_TYPE, false)
|
34
|
+
reply_message.body = "Echo [#{request_message.body}]"
|
35
|
+
|
36
|
+
# The result of this block is the message to be sent back to the requestor (client)
|
37
|
+
# Or, nil if no response should be sent back
|
38
|
+
reply_message
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
duration = Time.now - start_time - timeout/1000
|
43
|
+
puts "\nReceived #{count} requests in #{duration} seconds at #{count/duration} messages per second"
|
44
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Requestor (Client):
|
3
|
+
# Submit a request and wait for a reply
|
4
|
+
# Uses the Requestor Pattern
|
5
|
+
# The Server (server.rb) must be running first, otherwise this example
|
6
|
+
# program will eventually timeout
|
7
|
+
#
|
8
|
+
|
9
|
+
# Allow examples to be run in-place without requiring a gem install
|
10
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
11
|
+
|
12
|
+
require 'rubygems'
|
13
|
+
require 'hornetq'
|
14
|
+
|
15
|
+
timeout = (ARGV[0] || 5000).to_i
|
16
|
+
|
17
|
+
# Using Connect.start since a session must be started in order to consume messages
|
18
|
+
HornetQ::Client::Connection.start_session('hornetq://localhost') do |session|
|
19
|
+
|
20
|
+
# Create a non-durable ServerQueue to receive messages sent to the ServerAddress
|
21
|
+
session.create_queue_ignore_exists('ServerAddress', 'ServerQueue', false)
|
22
|
+
|
23
|
+
# Use Requestor (Client) Pattern to do a "RPC like" call to a server
|
24
|
+
# Under the covers the requestor creates a temporary dynamic reply to queue
|
25
|
+
# for the server to send the reply message to
|
26
|
+
session.requestor('ServerAddress') do |requestor|
|
27
|
+
# Create non-durable message
|
28
|
+
message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
|
29
|
+
message.body = "Some request data"
|
30
|
+
|
31
|
+
# Send message to the address
|
32
|
+
puts "Send request message and wait for Reply"
|
33
|
+
if reply = requestor.request(message, timeout)
|
34
|
+
puts "Received Response: #{reply.inspect}"
|
35
|
+
else
|
36
|
+
puts "Time out, No reply received after #{timeout/1000} seconds"
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Consumer:
|
3
|
+
# Reply to a request
|
4
|
+
# Implements the Server Pattern
|
5
|
+
# The reply message is sent back to the reply to address supplied by the
|
6
|
+
# requestor
|
7
|
+
#
|
8
|
+
|
9
|
+
# Allow examples to be run in-place without requiring a gem install
|
10
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
11
|
+
|
12
|
+
require 'rubygems'
|
13
|
+
require 'hornetq'
|
14
|
+
|
15
|
+
# By default the server will shutdown after 60 seconds, set to 0 to never shutdown
|
16
|
+
timeout = (ARGV[0] || 60000).to_i
|
17
|
+
|
18
|
+
HornetQ::Client::Connection.start_session(:connection=> {:uri => 'hornetq://localhost'}) do |session|
|
19
|
+
# Create a non-durable ServerQueue to receive messages sent to the ServerAddress
|
20
|
+
session.create_queue_ignore_exists('ServerAddress', 'ServerQueue', false)
|
21
|
+
|
22
|
+
session.server('ServerQueue', timeout) do |server|
|
23
|
+
puts "Waiting for Requests..."
|
24
|
+
server.run do |request_message|
|
25
|
+
puts "Received:[#{request_message.inspect}]"
|
26
|
+
|
27
|
+
# Create Reply Message
|
28
|
+
reply_message = session.create_message(HornetQ::Client::Message::TEXT_TYPE, false)
|
29
|
+
reply_message.body = "Echo [#{request_message.body}]"
|
30
|
+
|
31
|
+
# The result of this block is the message to be sent back to the requestor (client)
|
32
|
+
# Or, nil if no response should be sent back
|
33
|
+
reply_message
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Consumer:
|
3
|
+
# Read a single message from 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
|
+
# Using Connect.start since a session must be started in order to consume messages
|
13
|
+
HornetQ::Client::Connection.start_session('hornetq://localhost') do |session|
|
14
|
+
|
15
|
+
# Create a non-durable TestQueue to receive messages sent to the TestAddress
|
16
|
+
session.create_queue_ignore_exists('TestAddress', 'TestQueue', false)
|
17
|
+
|
18
|
+
# Consume All messages from the queue and gather statistics
|
19
|
+
stats = session.consume(:queue_name => 'TestQueue', :timeout=> 0, :statistics=>true) do |message|
|
20
|
+
p message
|
21
|
+
puts "=================================="
|
22
|
+
message.acknowledge
|
23
|
+
end
|
24
|
+
puts "Received #{stats[:count]} messages in #{stats[:duration]} seconds at #{stats[:messages_per_second]} messages per second"
|
25
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Consumer:
|
3
|
+
# Use Connection::on_message to consume all messages in separate
|
4
|
+
# threads so as not to block the main thread
|
5
|
+
#
|
6
|
+
|
7
|
+
# Allow examples to be run in-place without requiring a gem install
|
8
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
9
|
+
|
10
|
+
require 'rubygems'
|
11
|
+
require 'hornetq'
|
12
|
+
|
13
|
+
sleep_time = (ARGV[0] || 60000).to_i
|
14
|
+
session_count = (ARGV[1] || 1).to_i
|
15
|
+
|
16
|
+
# Using Connect.start since a session must be started in order to consume messages
|
17
|
+
HornetQ::Client::Connection.connection('hornetq://localhost') do |connection|
|
18
|
+
|
19
|
+
# Create a non-durable TestQueue to receive messages sent to the TestAddress
|
20
|
+
connection.session do |session|
|
21
|
+
session.create_queue_ignore_exists('TestAddress', 'TestQueue', false)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Consume All messages from the queue and gather statistics
|
25
|
+
# on_message will call the supplied block for every message received in another
|
26
|
+
# thread. As a result, the on_message call returns immediately!
|
27
|
+
# Other work can be performed on this thread, or just a sleep as in this example
|
28
|
+
#
|
29
|
+
# :session_count can be used to spawn multiple consumers simultaneously, each
|
30
|
+
# receiving messages simultaneously on their own threads
|
31
|
+
connection.on_message(:queue_name => 'TestQueue',
|
32
|
+
:session_count => session_count,
|
33
|
+
:statistics => true) do |message|
|
34
|
+
p message
|
35
|
+
puts "=================================="
|
36
|
+
message.acknowledge
|
37
|
+
end
|
38
|
+
|
39
|
+
puts "Started #{session_count} consumers, will wait for #{sleep_time/1000} seconds before shutting down"
|
40
|
+
# Wait for sleep_time before shutting down the server
|
41
|
+
sleep(sleep_time/1000)
|
42
|
+
|
43
|
+
connection.on_message_statistics.each do |stats|
|
44
|
+
puts "Received #{stats[:count]} messages in #{stats[:duration]} seconds at #{stats[:messages_per_second]} messages per second"
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#
|
2
|
+
# HornetQ Consumer:
|
3
|
+
# Read a single message from 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
|
+
# Using Connect.start since a session must be started in order to consume messages
|
13
|
+
HornetQ::Client::Connection.start_session('hornetq://localhost') do |session|
|
14
|
+
|
15
|
+
# Create the non-durable TestQueue to receive messages sent to the TestAddress
|
16
|
+
session.create_queue_ignore_exists('TestAddress', 'TestQueue', false)
|
17
|
+
|
18
|
+
session.consumer('TestQueue') do |consumer|
|
19
|
+
# Receive a single message, return immediately if no message available
|
20
|
+
if message = consumer.receive_immediate
|
21
|
+
puts "Received:[#{message.body}]"
|
22
|
+
message.acknowledge
|
23
|
+
else
|
24
|
+
puts "No message found"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,32 @@
|
|
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
|
+
# Using Connect.session since a session does not have to be started in order
|
13
|
+
# to produce messages
|
14
|
+
HornetQ::Client::Connection.session('hornetq://localhost') do |session|
|
15
|
+
# Create a non-durable TestQueue to receive messages sent to the TestAddress
|
16
|
+
session.create_queue_ignore_exists('TestAddress', 'TestQueue', false)
|
17
|
+
|
18
|
+
# Using the Producer pattern send messages to the Address 'TestAddress'
|
19
|
+
session.producer('TestAddress') do |producer|
|
20
|
+
# Create a non-durable message
|
21
|
+
message = session.create_message(false)
|
22
|
+
# Mark message as text
|
23
|
+
message.type_sym = :text
|
24
|
+
# Always set the message type prior to setting the body so that the message
|
25
|
+
# is correctly created for you
|
26
|
+
message.body = "#{Time.now}: ### Hello, World ###"
|
27
|
+
|
28
|
+
producer.send(message)
|
29
|
+
|
30
|
+
puts "Sent Message: #{message.inspect}"
|
31
|
+
end
|
32
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Allow examples to be run in-place without requiring a gem install
|
2
|
-
$LOAD_PATH.unshift File.dirname(__FILE__) + '
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'resque/job_with_status' # in rails you would probably do this in an initializer
|
@@ -129,7 +129,7 @@ class HornetQJob < Resque::JobWithStatus
|
|
129
129
|
|
130
130
|
# Create a HornetQ session
|
131
131
|
count = 0
|
132
|
-
HornetQ::Client::
|
132
|
+
HornetQ::Client::Connection.session('hornetq://localhost') do |session|
|
133
133
|
batching_size = total_count if batching_size > total_count
|
134
134
|
|
135
135
|
client = BatchClient.new(session, address)
|
@@ -14,7 +14,7 @@ timeout = (ARGV[0] || 300000).to_i
|
|
14
14
|
|
15
15
|
q_name = 'processor'
|
16
16
|
|
17
|
-
HornetQ::Client::
|
17
|
+
HornetQ::Client::Connection.start_session('hornetq://localhost') do |session|
|
18
18
|
begin
|
19
19
|
# Create durable queue with matching address
|
20
20
|
session.create_queue(q_name, q_name, true)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -10,23 +10,22 @@ require 'rubygems'
|
|
10
10
|
require 'hornetq'
|
11
11
|
|
12
12
|
# Create and start an InVM HornetQ server instance
|
13
|
-
HornetQ::Server
|
13
|
+
HornetQ::Server.start('hornetq://invm') do |server|
|
14
14
|
# Allow a CTRL-C to stop this process
|
15
15
|
server.enable_shutdown_on_signal
|
16
16
|
|
17
|
-
HornetQ::Client::
|
17
|
+
HornetQ::Client::Connection.start_session('hornetq://invm') do |session|
|
18
18
|
session.create_queue("MyAddress","MyQueue", nil, false)
|
19
|
-
|
19
|
+
|
20
20
|
producer = session.create_producer('MyAddress')
|
21
21
|
consumer = session.create_consumer('MyQueue')
|
22
|
-
|
22
|
+
|
23
23
|
# Create a non-durable message to send
|
24
24
|
message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
|
25
25
|
message.body = "#{Time.now}: ### Hello, World ###"
|
26
|
-
|
26
|
+
|
27
27
|
producer.send(message)
|
28
|
-
|
29
|
-
|
28
|
+
|
30
29
|
# Receive a single message, return immediately if no message available
|
31
30
|
if message = consumer.receive_immediate
|
32
31
|
puts "Received:[#{message.body}]"
|