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.
Files changed (77) hide show
  1. data/HISTORY.md +12 -0
  2. data/Rakefile +13 -1
  3. data/bin/hornetq_server +2 -2
  4. data/examples/README +6 -0
  5. data/examples/{client/advanced → advanced}/batch_client.rb +18 -34
  6. data/examples/advanced/bytes_producer.rb +25 -0
  7. data/examples/advanced/client.rb +56 -0
  8. data/examples/{client/advanced/multi_client.rb → advanced/client_session_pooling.rb} +29 -25
  9. data/examples/advanced/consume_on_message.rb +50 -0
  10. data/examples/advanced/consumer.rb +31 -0
  11. data/examples/{client/advanced → advanced}/hornetq.yml +8 -6
  12. data/examples/advanced/multi_client.rb +71 -0
  13. data/examples/advanced/producer.rb +37 -0
  14. data/examples/advanced/server.rb +44 -0
  15. data/examples/client-server/client.rb +40 -0
  16. data/examples/client-server/server.rb +37 -0
  17. data/examples/producer-consumer/consume_all.rb +25 -0
  18. data/examples/producer-consumer/consume_on_message.rb +46 -0
  19. data/examples/producer-consumer/consumer.rb +27 -0
  20. data/examples/producer-consumer/producer.rb +32 -0
  21. data/examples/{client/resque → resque}/hornetq_job.rb +2 -2
  22. data/examples/{client/resque → resque}/processor.rb +1 -1
  23. data/examples/{client/resque → resque}/readme.md +0 -0
  24. data/examples/{client/resque → resque}/resque_conf.rb +0 -0
  25. data/examples/{client/resque → resque}/resque_worker.rb +0 -0
  26. data/examples/{client/resque → resque}/sleep_job.rb +0 -0
  27. data/examples/{server → server-config}/backup_server.yml +0 -0
  28. data/examples/{server → server-config}/live_server.yml +0 -0
  29. data/examples/{server → server-config}/standalone_server.yml +0 -0
  30. data/examples/{client → simple}/invm.rb +6 -7
  31. data/examples/{advanced/transaction-failover → transaction-failover}/README +0 -0
  32. data/examples/{advanced/transaction-failover → transaction-failover}/consumer.rb +4 -1
  33. data/examples/{advanced/transaction-failover → transaction-failover}/hornetq.yml +6 -3
  34. data/examples/{advanced/transaction-failover → transaction-failover}/producer.rb +8 -3
  35. data/examples/{simple_worker → worker}/README +0 -0
  36. data/examples/worker/hornetq.yml +26 -0
  37. data/examples/worker/producer.rb +71 -0
  38. data/examples/{simple_worker → worker}/test_object.rb +0 -0
  39. data/examples/worker/worker.rb +72 -0
  40. data/lib/hornetq/client.rb +1 -1
  41. data/lib/hornetq/client/{factory.rb → connection.rb} +153 -86
  42. data/lib/hornetq/client/message_handler.rb +3 -3
  43. data/lib/hornetq/client/org_hornetq_api_core_client_client_session.rb +187 -26
  44. data/lib/hornetq/client/org_hornetq_core_client_impl_client_consumer_impl.rb +26 -9
  45. data/lib/hornetq/client/org_hornetq_core_client_impl_client_message_impl.rb +190 -35
  46. data/lib/hornetq/client/session_pool.rb +4 -4
  47. data/lib/hornetq/common/log_delegate.rb +17 -15
  48. data/lib/hornetq/common/logging.rb +20 -7
  49. data/lib/hornetq/common/org_hornetq_core_logging_logger.rb +11 -9
  50. data/lib/hornetq/server.rb +86 -3
  51. data/lib/hornetq/{org_hornetq_core_server_hornet_q_server.rb → server/org_hornetq_core_server_hornet_q_server.rb} +1 -1
  52. data/lib/hornetq/uri.rb +4 -0
  53. data/test/client_connection_test.rb +158 -0
  54. data/test/logging_test.rb +32 -0
  55. data/test/server_test.rb +208 -0
  56. metadata +47 -48
  57. data/examples/client/advanced/bytes_producer.rb +0 -21
  58. data/examples/client/advanced/client.rb +0 -47
  59. data/examples/client/advanced/consumer.rb +0 -35
  60. data/examples/client/advanced/multi_consumer.rb +0 -54
  61. data/examples/client/advanced/producer.rb +0 -35
  62. data/examples/client/advanced/server.rb +0 -39
  63. data/examples/client/client.rb +0 -31
  64. data/examples/client/consumer.rb +0 -22
  65. data/examples/client/data/bindings/hornetq-bindings-1.bindings +0 -0
  66. data/examples/client/data/bindings/hornetq-bindings-2.bindings +0 -0
  67. data/examples/client/data/journal/hornetq-data-1.hq +0 -0
  68. data/examples/client/data/journal/hornetq-data-2.hq +0 -0
  69. data/examples/client/producer.rb +0 -21
  70. data/examples/client/server.rb +0 -31
  71. data/examples/simple_worker/hornetq.yml +0 -34
  72. data/examples/simple_worker/producer.rb +0 -54
  73. data/examples/simple_worker/worker.rb +0 -49
  74. data/lib/data/bindings/hornetq-bindings-1.bindings +0 -0
  75. data/lib/data/bindings/hornetq-bindings-2.bindings +0 -0
  76. data/lib/hornetq/server/factory.rb +0 -87
  77. data/test/server_factory_test.rb +0 -183
@@ -0,0 +1,32 @@
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 'yaml'
8
+ require 'hornetq'
9
+
10
+ class LoggingTest < Test::Unit::TestCase
11
+ context 'Without Connection' do
12
+ def log_it
13
+ HornetQ::logger.error 'Hello'
14
+ HornetQ::logger.warn 'Hello'
15
+ HornetQ::logger.info 'Hello'
16
+ HornetQ::logger.debug 'Hello'
17
+ HornetQ::logger.trace 'Hello'
18
+ end
19
+
20
+ should 'be able to use the default HornetQ logger' do
21
+ # Reset logger to HornetQ logger
22
+ HornetQ::logger = nil
23
+ log_it
24
+ end
25
+
26
+ should 'be able to use the default HornetQ Ruby logger' do
27
+ HornetQ::logger = HornetQ::ruby_logger
28
+ log_it
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,208 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'hornetq'
5
+ require 'fileutils'
6
+
7
+ class MyThread < ::Thread
8
+ def initialize(name, &block)
9
+ super() do
10
+ begin
11
+ yield
12
+ rescue => e
13
+ HornetQ.logger.error("Thread #{name} died due to exception #{e.message}\n#{e.backtrace.join("\n")}")
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ class ServerTest < Test::Unit::TestCase
20
+ context 'standalone server without security' do
21
+ setup do
22
+ @server = nil
23
+ @tmp_data_dir = "/tmp/data_dir/#{$$}"
24
+ @uri = "hornetq://localhost:15445"
25
+ @server_thread = MyThread.new('standalone server') do
26
+ @server = HornetQ::Server.create_server(:uri => @uri, :data_directory => @tmp_data_dir, :security_enabled => false)
27
+ @server.start
28
+ end
29
+ # Give the server time to startup
30
+ sleep 5
31
+ end
32
+
33
+ teardown do
34
+ @server.stop if @server
35
+ @server_thread.join if @server_thread
36
+ FileUtils.rm_rf(@tmp_data_dir)
37
+ end
38
+
39
+ should 'pass simple messages' do
40
+ config = { :connection => { :uri => @uri } }
41
+ perform_simple_message_test(config, 'test_queue', 10)
42
+ end
43
+ end
44
+
45
+ context 'standalone server with security' do
46
+ setup do
47
+ @server = nil
48
+ @user = 'clarity'
49
+ @password = 'clarity'
50
+ @tmp_data_dir = "/tmp/data_dir/#{$$}"
51
+ @uri = "hornetq://localhost:15445"
52
+ @server_thread = MyThread.new('standalone server') do
53
+ @server = HornetQ::Server.create_server(:uri => @uri, :data_directory => @tmp_data_dir, :cluster_user => @user, :cluster_password => @password)
54
+ @server.start
55
+ end
56
+ # Give the server time to startup
57
+ sleep 5
58
+ end
59
+
60
+ teardown do
61
+ @server.stop if @server
62
+ @server_thread.join if @server_thread
63
+ FileUtils.rm_rf(@tmp_data_dir)
64
+ end
65
+
66
+ should 'pass simple messages' do
67
+ config = {
68
+ :connection => { :uri => @uri },
69
+ :session => { :username => @user, :password => @password}
70
+ }
71
+ perform_simple_message_test(config, 'test_queue', 10)
72
+ end
73
+ end
74
+
75
+ # TODO: Figure out why producer gets severe error during failover
76
+ # context 'live and backup server' do
77
+ # setup do
78
+ # @count = 20
79
+ #
80
+ # @server = nil
81
+ # @tmp_data_dir = "/tmp/data_dir/#{$$}"
82
+ # @uri = "hornetq://localhost:15445,localhost:15446"
83
+ #
84
+ # @backup_server = nil
85
+ # @backup_tmp_data_dir = "/tmp/backup_data_dir/#{$$}"
86
+ # @backup_uri = "hornetq://localhost:15446"
87
+ #
88
+ # @backup_server_thread = MyThread.new('backup server') do
89
+ # begin
90
+ # @backup_server = HornetQ::Server.create_server(:uri => @backup_uri, :data_directory => @backup_tmp_data_dir, :backup => true, :security_enabled => false)
91
+ # @backup_server.start
92
+ # rescue Exception => e
93
+ # HornetQ.logger.error "Error in backup server thread: #{e.message}\n#{e.backtrace.join("\n")}"
94
+ # end
95
+ # end
96
+ # # Give the backup server time to startup
97
+ # sleep 10
98
+ #
99
+ # @server_thread = MyThread.new('live server') do
100
+ # begin
101
+ # @server = HornetQ::Server.create_server(:uri => @uri, :data_directory => @tmp_data_dir, :security_enabled => false)
102
+ # @server.start
103
+ # rescue Exception => e
104
+ # HornetQ.logger.error "Error in live server thread: #{e.message}\n#{e.backtrace.join("\n")}"
105
+ # end
106
+ # end
107
+ #
108
+ # # Give the live server time to startup
109
+ # sleep 10
110
+ #
111
+ # @queue_name = 'test_queue'
112
+ # @config = {
113
+ # :connection => {
114
+ # :uri => @uri,
115
+ # :failover_on_initial_connection => true,
116
+ # :failover_on_server_shutdown => true,
117
+ # },
118
+ # :session => {}
119
+ # }
120
+ #
121
+ # @killer_thread = MyThread.new('killer') do
122
+ # sleep 5
123
+ # @server.stop
124
+ # end
125
+ #
126
+ # @producer_thread = MyThread.new('producer') do
127
+ # # Create a HornetQ session
128
+ # HornetQ::Client::Connection.session(@config) do |session|
129
+ # session.create_queue(@queue_name, @queue_name, true)
130
+ # producer = session.create_producer(@queue_name)
131
+ # (1..@count).each do |i|
132
+ # message = session.create_message(HornetQ::Client::Message::TEXT_TYPE, true)
133
+ # # Set the message body text
134
+ # message.body = "Message ##{i}"
135
+ # # Send message to the queue
136
+ # begin
137
+ # HornetQ.logger.info "Producing message: #{message.body}"
138
+ # producer.send(message)
139
+ # sleep 1
140
+ # rescue Java::org.hornetq.api.core.HornetQException => e
141
+ # HornetQ.logger.error "Received producer exception: #{e.message} with code=#{e.cause.code}"
142
+ # if e.cause.getCode == Java::org.hornetq.api.core.HornetQException::UNBLOCKED
143
+ # HornetQ.logger.info "Retrying the send"
144
+ # retry
145
+ # end
146
+ # rescue Exception => e
147
+ # HornetQ.logger.error "Received producer exception: #{e.message}"
148
+ # end
149
+ # end
150
+ # end
151
+ # end
152
+ # end
153
+ #
154
+ # teardown do
155
+ # @server.stop
156
+ # @backup_server.stop
157
+ # [ @server_thread, @backup_server_thread, @killer_thread, @producer_thread ].each do |thread|
158
+ # thread.join
159
+ # end
160
+ # FileUtils.rm_rf([@tmp_data_dir, @backup_tmp_data_dir])
161
+ # end
162
+ #
163
+ # should 'failover to backup server w/o message loss' do
164
+ # # Let the producer create the queue
165
+ # sleep 2
166
+ # HornetQ::Client::Connection.session(@config) do |session|
167
+ # consumer = session.create_consumer(@queue_name)
168
+ # session.start
169
+ #
170
+ # i = 0
171
+ # while message = consumer.receive(1000)
172
+ # i += 1
173
+ # message.acknowledge
174
+ # assert_equal "Message ##{i}", message.body
175
+ # HornetQ.logger.info "Consuming message #{message.body}"
176
+ # end
177
+ # assert_equal @count, i
178
+ # end
179
+ # end
180
+ # end
181
+
182
+ def perform_simple_message_test(config, queue_name, count)
183
+ HornetQ::Client::Connection.session(config) do |session|
184
+ session.create_queue(queue_name, queue_name, true)
185
+ producer = session.create_producer(queue_name)
186
+ (1..count).each do |i|
187
+ message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
188
+ message.durable = true
189
+ # Set the message body text
190
+ message.body = "Message ##{i}"
191
+ # Send message to the queue
192
+ producer.send(message)
193
+ end
194
+ end
195
+
196
+ HornetQ::Client::Connection.session(config) do |session|
197
+ consumer = session.create_consumer(queue_name)
198
+ session.start
199
+
200
+ i = 0
201
+ while message = consumer.receive(1000)
202
+ i += 1
203
+ message.acknowledge
204
+ assert_equal "Message ##{i}", message.body
205
+ end
206
+ end
207
+ end
208
+ end
metadata CHANGED
@@ -4,10 +4,10 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: true
5
5
  segments:
6
6
  - 0
7
- - 2
8
- - 5
7
+ - 3
8
+ - 0
9
9
  - alpha
10
- version: 0.2.5.alpha
10
+ version: 0.3.0.alpha
11
11
  platform: ruby
12
12
  authors:
13
13
  - Reid Morrison
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-02-07 00:00:00 -05:00
19
+ date: 2011-02-18 00:00:00 -05:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -37,8 +37,8 @@ description: JRuby-HornetQ is a Java and Ruby library that exposes the HornetQ J
37
37
  email:
38
38
  - rubywmq@gmail.com
39
39
  - bpardee@gmail.com
40
- executables: []
41
-
40
+ executables:
41
+ - hornetq_server
42
42
  extensions: []
43
43
 
44
44
  extra_rdoc_files: []
@@ -49,50 +49,47 @@ files:
49
49
  - Rakefile
50
50
  - README.md
51
51
  - bin/hornetq_server
52
- - examples/advanced/transaction-failover/consumer.rb
53
- - examples/advanced/transaction-failover/hornetq.yml
54
- - examples/advanced/transaction-failover/producer.rb
55
- - examples/advanced/transaction-failover/README
56
- - examples/client/client.rb
57
- - examples/client/consumer.rb
58
- - examples/client/invm.rb
59
- - examples/client/producer.rb
60
- - examples/client/server.rb
61
- - examples/client/advanced/batch_client.rb
62
- - examples/client/advanced/bytes_producer.rb
63
- - examples/client/advanced/client.rb
64
- - examples/client/advanced/consumer.rb
65
- - examples/client/advanced/hornetq.yml
66
- - examples/client/advanced/multi_client.rb
67
- - examples/client/advanced/multi_consumer.rb
68
- - examples/client/advanced/producer.rb
69
- - examples/client/advanced/server.rb
70
- - examples/client/data/bindings/hornetq-bindings-1.bindings
71
- - examples/client/data/bindings/hornetq-bindings-2.bindings
72
- - examples/client/data/journal/hornetq-data-1.hq
73
- - examples/client/data/journal/hornetq-data-2.hq
74
- - examples/client/resque/hornetq_job.rb
75
- - examples/client/resque/processor.rb
76
- - examples/client/resque/readme.md
77
- - examples/client/resque/resque_conf.rb
78
- - examples/client/resque/resque_worker.rb
79
- - examples/client/resque/sleep_job.rb
80
- - examples/server/backup_server.yml
81
- - examples/server/live_server.yml
82
- - examples/server/standalone_server.yml
83
- - examples/simple_worker/hornetq.yml
84
- - examples/simple_worker/producer.rb
85
- - examples/simple_worker/README
86
- - examples/simple_worker/test_object.rb
87
- - examples/simple_worker/worker.rb
52
+ - examples/README
53
+ - examples/advanced/batch_client.rb
54
+ - examples/advanced/bytes_producer.rb
55
+ - examples/advanced/client.rb
56
+ - examples/advanced/client_session_pooling.rb
57
+ - examples/advanced/consume_on_message.rb
58
+ - examples/advanced/consumer.rb
59
+ - examples/advanced/hornetq.yml
60
+ - examples/advanced/multi_client.rb
61
+ - examples/advanced/producer.rb
62
+ - examples/advanced/server.rb
63
+ - examples/client-server/client.rb
64
+ - examples/client-server/server.rb
65
+ - examples/producer-consumer/consume_all.rb
66
+ - examples/producer-consumer/consume_on_message.rb
67
+ - examples/producer-consumer/consumer.rb
68
+ - examples/producer-consumer/producer.rb
69
+ - examples/resque/hornetq_job.rb
70
+ - examples/resque/processor.rb
71
+ - examples/resque/readme.md
72
+ - examples/resque/resque_conf.rb
73
+ - examples/resque/resque_worker.rb
74
+ - examples/resque/sleep_job.rb
75
+ - examples/server-config/backup_server.yml
76
+ - examples/server-config/live_server.yml
77
+ - examples/server-config/standalone_server.yml
78
+ - examples/simple/invm.rb
79
+ - examples/transaction-failover/consumer.rb
80
+ - examples/transaction-failover/hornetq.yml
81
+ - examples/transaction-failover/producer.rb
82
+ - examples/transaction-failover/README
83
+ - examples/worker/hornetq.yml
84
+ - examples/worker/producer.rb
85
+ - examples/worker/README
86
+ - examples/worker/test_object.rb
87
+ - examples/worker/worker.rb
88
88
  - lib/hornetq.rb
89
- - lib/data/bindings/hornetq-bindings-1.bindings
90
- - lib/data/bindings/hornetq-bindings-2.bindings
91
89
  - lib/hornetq/client.rb
92
- - lib/hornetq/org_hornetq_core_server_hornet_q_server.rb
93
90
  - lib/hornetq/server.rb
94
91
  - lib/hornetq/uri.rb
95
- - lib/hornetq/client/factory.rb
92
+ - lib/hornetq/client/connection.rb
96
93
  - lib/hornetq/client/message_handler.rb
97
94
  - lib/hornetq/client/org_hornetq_api_core_client_client_session.rb
98
95
  - lib/hornetq/client/org_hornetq_core_client_impl_client_consumer_impl.rb
@@ -108,8 +105,10 @@ files:
108
105
  - lib/hornetq/java/hornetq-core-client.jar
109
106
  - lib/hornetq/java/hornetq-core.jar
110
107
  - lib/hornetq/java/netty.jar
111
- - lib/hornetq/server/factory.rb
112
- - test/server_factory_test.rb
108
+ - lib/hornetq/server/org_hornetq_core_server_hornet_q_server.rb
109
+ - test/client_connection_test.rb
110
+ - test/logging_test.rb
111
+ - test/server_test.rb
113
112
  - test/uri_test.rb
114
113
  has_rdoc: true
115
114
  homepage: https://github.com/ClarityServices/jruby-hornetq
@@ -1,21 +0,0 @@
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.session('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::BYTES_TYPE,false)
18
- message.body = "#{Time.now}: ### Hello, World ###"
19
-
20
- producer.send(message)
21
- end
@@ -1,47 +0,0 @@
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 'yaml'
11
- require 'hornetq'
12
-
13
- count = (ARGV[0] || 1).to_i
14
- timeout = (ARGV[1] || 30000).to_i
15
-
16
- config = YAML.load_file(File.dirname(__FILE__) + '/hornetq.yml')['development']
17
-
18
- # Create a HornetQ session
19
- HornetQ::Client::Factory.session(config) do |session|
20
- #session.create_queue('Example', 'Example', true)
21
- requestor = session.create_requestor('jms.queue.ExampleQueue')
22
- session.start
23
- start_time = Time.now
24
-
25
- puts "Sending messages"
26
- (1..count).each do |i|
27
- message = session.create_message(HornetQ::Client::Message::TEXT_TYPE,false)
28
- # Set the message body text
29
- message.body = "Request Current Time"
30
- # Set the user managed message id
31
- message.user_id = Java::org.hornetq.utils::UUIDGenerator.getInstance.generateUUID
32
- # Send request message and wait for reply
33
- if reply = requestor.request(message, timeout)
34
- puts "Received Response: #{reply.inspect}" if count < 10
35
- puts " Message:[#{reply.body.inspect}]" if count < 10
36
- print "." if count >= 10
37
- else
38
- puts "Time out, No reply received after #{timeout/1000} seconds"
39
- end
40
- puts "#{i}" if i%1000 == 0
41
- puts "Durable" if message.durable
42
- end
43
-
44
- requestor.close
45
- duration = Time.now - start_time
46
- puts "\nMade #{count} calls in #{duration} seconds at #{count/duration} messages per second"
47
- end
@@ -1,35 +0,0 @@
1
- #
2
- # HornetQ Consumer:
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 'yaml'
11
- require 'hornetq'
12
-
13
- timeout = (ARGV[0] || 1000).to_i
14
-
15
- config = YAML.load_file(File.dirname(__FILE__) + '/hornetq.yml')['development']
16
-
17
- # Create a HornetQ session
18
- HornetQ::Client::Factory.session(config) do |session|
19
- consumer = session.create_consumer('jms.queue.ExampleQueue')
20
- session.start
21
-
22
- count = 0
23
- start_time = Time.now
24
- while message = consumer.receive(timeout)
25
- count = count + 1
26
- message.acknowledge
27
- puts "=================================="
28
- text = message.body
29
- p text
30
- p message
31
- puts "Durable" if message.durable
32
- end
33
- duration = Time.now - start_time - timeout/1000
34
- puts "Received #{count} messages in #{duration} seconds at #{count/duration} messages per second"
35
- end