jruby-hornetq 0.2.5.alpha → 0.3.0.alpha

Sign up to get free protection for your applications and to get access to all the features.
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