jruby-jms 0.9.0 → 0.10.0
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/README.md +46 -63
- data/Rakefile +12 -1
- data/examples/jms.yml +10 -2
- data/lib/jms.rb +1 -7
- data/lib/jms/connection.rb +128 -98
- data/lib/jms/javax_jms_session.rb +221 -48
- data/lib/jms/logger.rb +4 -0
- data/lib/jms/logging.rb +29 -0
- data/lib/jms/message_listener.rb +79 -0
- data/test/connection_test.rb +155 -0
- data/test/jms.yml +38 -0
- data/test/session_test.rb +184 -0
- metadata +18 -7
- data/examples/log4j.properties +0 -31
data/test/jms.yml
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# This YAML file contains the configuration options for several different
|
2
|
+
# JMS Providers
|
3
|
+
#
|
4
|
+
# The Examples that ship with jruby-jms will use the entry 'default' unless
|
5
|
+
# overriden at the command line. For example:
|
6
|
+
# jruby producer.rb activemq
|
7
|
+
#
|
8
|
+
---
|
9
|
+
# Which JMS Provider to use by default
|
10
|
+
default: activemq
|
11
|
+
|
12
|
+
activemq:
|
13
|
+
:factory: org.apache.activemq.ActiveMQConnectionFactory
|
14
|
+
:broker_url: tcp://localhost:61616
|
15
|
+
:require_jars:
|
16
|
+
- ~/Applications/apache-activemq-5.4.2/activemq-all-5.4.2.jar
|
17
|
+
:queue_name: TestQueue
|
18
|
+
:topic_name: TestTopic
|
19
|
+
|
20
|
+
hornetq:
|
21
|
+
# Connect to a local HornetQ Broker using JNDI
|
22
|
+
:jndi_name: /ConnectionFactory
|
23
|
+
:jndi_context:
|
24
|
+
java.naming.factory.initial: org.jnp.interfaces.NamingContextFactory
|
25
|
+
java.naming.provider.url: jnp://localhost:1099
|
26
|
+
java.naming.factory.url.pkgs: org.jboss.naming:org.jnp.interfaces
|
27
|
+
java.naming.security.principal: guest
|
28
|
+
java.naming.security.credentials: guest
|
29
|
+
:require_jars:
|
30
|
+
- ~/Applications/hornetq-2.1.2.Final/lib/hornetq-core-client.jar
|
31
|
+
- ~/Applications/hornetq-2.1.2.Final/lib/hornetq-core.jar
|
32
|
+
- ~/Applications/hornetq-2.1.2.Final/lib/hornetq-jms-client.jar
|
33
|
+
- ~/Applications/hornetq-2.1.2.Final/lib/jboss-jms-api.jar
|
34
|
+
- ~/Applications/hornetq-2.1.2.Final/lib/jnp-client.jar
|
35
|
+
- ~/Applications/hornetq-2.1.2.Final/lib/netty.jar
|
36
|
+
:queue_name: TestQueue
|
37
|
+
:topic_name: TestTopic
|
38
|
+
|
@@ -0,0 +1,184 @@
|
|
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 'jms'
|
8
|
+
require 'yaml'
|
9
|
+
|
10
|
+
class JMSTest < Test::Unit::TestCase
|
11
|
+
context 'JMS Session' do
|
12
|
+
# Load configuration from jms.yml
|
13
|
+
setup do
|
14
|
+
# To change the JMS provider, edit jms.yml and change :default
|
15
|
+
|
16
|
+
# Load Connection parameters from configuration file
|
17
|
+
cfg = YAML.load_file(File.join(File.dirname(__FILE__), 'jms.yml'))
|
18
|
+
jms_provider = cfg['default']
|
19
|
+
@config = cfg[jms_provider]
|
20
|
+
raise "JMS Provider option:#{jms_provider} not found in jms.yml file" unless @config
|
21
|
+
@queue_name = @config[:queue_name] || raise("Mandatory :queue_name missing from jms.yml")
|
22
|
+
@topic_name = @config[:topic_name] || raise("Mandatory :topic_name missing from jms.yml")
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'create a session' do
|
26
|
+
JMS::Connection.session(@config) do |session|
|
27
|
+
assert_not_nil session
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
should 'create automatic messages' do
|
32
|
+
JMS::Connection.session(@config) do |session|
|
33
|
+
assert_not_nil session
|
34
|
+
# Create Text Message
|
35
|
+
assert_equal session.message("Hello").java_kind_of?(javax.jms::TextMessage), true
|
36
|
+
|
37
|
+
# Create Map Message
|
38
|
+
assert_equal session.message('hello'=>'world').java_kind_of?(javax.jms::MapMessage), true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
should 'create explicit messages' do
|
43
|
+
JMS::Connection.session(@config) do |session|
|
44
|
+
assert_not_nil session
|
45
|
+
# Create Text Message
|
46
|
+
assert_equal session.create_text_message("Hello").java_kind_of?(javax.jms::TextMessage), true
|
47
|
+
|
48
|
+
# Create Map Message
|
49
|
+
assert_equal session.create_map_message.java_kind_of?(javax.jms::MapMessage), true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
should 'create temporary destinations in blocks' do
|
54
|
+
JMS::Connection.session(@config) do |session|
|
55
|
+
assert_not_nil session
|
56
|
+
|
57
|
+
# Temporary Queue
|
58
|
+
session.destination(:queue_name => :temporary) do |destination|
|
59
|
+
assert_equal destination.java_kind_of?(javax.jms::TemporaryQueue), true
|
60
|
+
end
|
61
|
+
|
62
|
+
# Temporary Topic
|
63
|
+
session.create_destination(:topic_name => :temporary) do |destination|
|
64
|
+
assert_equal destination.java_kind_of?(javax.jms::TemporaryTopic), true
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
should 'create temporary destinations' do
|
70
|
+
JMS::Connection.session(@config) do |session|
|
71
|
+
assert_not_nil session
|
72
|
+
|
73
|
+
# Temporary Queue
|
74
|
+
destination = session.create_destination(:queue_name => :temporary)
|
75
|
+
assert_equal destination.java_kind_of?(javax.jms::TemporaryQueue), true
|
76
|
+
destination.delete
|
77
|
+
|
78
|
+
# Temporary Topic
|
79
|
+
destination = session.create_destination(:topic_name => :temporary)
|
80
|
+
assert_equal destination.java_kind_of?(javax.jms::TemporaryTopic), true
|
81
|
+
destination.delete
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
should 'create destinations in blocks' do
|
86
|
+
JMS::Connection.session(@config) do |session|
|
87
|
+
assert_not_nil session
|
88
|
+
|
89
|
+
# Temporary Queue
|
90
|
+
session.destination(:queue_name => @queue_name) do |destination|
|
91
|
+
assert_equal destination.java_kind_of?(javax.jms::Queue), true
|
92
|
+
end
|
93
|
+
|
94
|
+
# Temporary Topic
|
95
|
+
session.create_destination(:topic_name => @topic_name) do |destination|
|
96
|
+
assert_equal destination.java_kind_of?(javax.jms::Topic), true
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
should 'create destinations' do
|
102
|
+
JMS::Connection.session(@config) do |session|
|
103
|
+
assert_not_nil session
|
104
|
+
|
105
|
+
# Queue
|
106
|
+
queue = session.create_destination(:queue_name => @queue_name)
|
107
|
+
assert_equal queue.java_kind_of?(javax.jms::Queue), true
|
108
|
+
|
109
|
+
# Topic
|
110
|
+
topic = session.create_destination(:topic_name => @topic_name)
|
111
|
+
assert_equal topic.java_kind_of?(javax.jms::Topic), true
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
should 'create destinations using direct methods' do
|
116
|
+
JMS::Connection.session(@config) do |session|
|
117
|
+
assert_not_nil session
|
118
|
+
|
119
|
+
# Queue
|
120
|
+
queue = session.queue(@queue_name)
|
121
|
+
assert_equal queue.java_kind_of?(javax.jms::Queue), true
|
122
|
+
|
123
|
+
# Temporary Queue
|
124
|
+
queue = session.temporary_queue
|
125
|
+
assert_equal queue.java_kind_of?(javax.jms::TemporaryQueue), true
|
126
|
+
queue.delete
|
127
|
+
|
128
|
+
# Topic
|
129
|
+
topic = session.topic(@topic_name)
|
130
|
+
assert_equal topic.java_kind_of?(javax.jms::Topic), true
|
131
|
+
|
132
|
+
# Temporary Topic
|
133
|
+
topic = session.temporary_topic
|
134
|
+
assert_equal topic.java_kind_of?(javax.jms::TemporaryTopic), true
|
135
|
+
topic.delete
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
should 'produce and consume messages to/from a temporary queue' do
|
140
|
+
JMS::Connection.session(@config) do |session|
|
141
|
+
assert_not_nil session
|
142
|
+
data = nil
|
143
|
+
session.producer(:queue_name => :temporary) do |producer|
|
144
|
+
# Send Message
|
145
|
+
producer.send(session.message('Hello World'))
|
146
|
+
|
147
|
+
# Consume Message
|
148
|
+
session.consume(:destination => producer.destination) do |message|
|
149
|
+
assert_equal message.java_kind_of?(javax.jms::TextMessage), true
|
150
|
+
data = message.data
|
151
|
+
end
|
152
|
+
end
|
153
|
+
assert_equal data, 'Hello World'
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
should 'produce, browse and consume messages to/from a queue' do
|
158
|
+
JMS::Connection.session(@config) do |session|
|
159
|
+
assert_not_nil session
|
160
|
+
data = nil
|
161
|
+
browse_data = nil
|
162
|
+
session.producer(:queue_name => @queue_name) do |producer|
|
163
|
+
# Send Message
|
164
|
+
producer.send(session.message('Hello World'))
|
165
|
+
|
166
|
+
# Browse Message
|
167
|
+
session.browse(:queue_name => @queue_name) do |message|
|
168
|
+
assert_equal message.java_kind_of?(javax.jms::TextMessage), true
|
169
|
+
browse_data = message.data
|
170
|
+
end
|
171
|
+
|
172
|
+
# Consume Message
|
173
|
+
session.consume(:queue_name => @queue_name) do |message|
|
174
|
+
assert_equal message.java_kind_of?(javax.jms::TextMessage), true
|
175
|
+
data = message.data
|
176
|
+
end
|
177
|
+
end
|
178
|
+
assert_equal data, 'Hello World'
|
179
|
+
assert_equal browse_data, 'Hello World'
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jruby-jms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 10
|
8
|
+
- 0
|
9
|
+
version: 0.10.0
|
6
10
|
platform: ruby
|
7
11
|
authors:
|
8
12
|
- Reid Morrison
|
@@ -10,7 +14,7 @@ autorequire:
|
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
16
|
|
13
|
-
date: 2011-
|
17
|
+
date: 2011-02-10 00:00:00 -05:00
|
14
18
|
default_executable:
|
15
19
|
dependencies: []
|
16
20
|
|
@@ -29,7 +33,6 @@ files:
|
|
29
33
|
- README.md
|
30
34
|
- examples/consumer.rb
|
31
35
|
- examples/jms.yml
|
32
|
-
- examples/log4j.properties
|
33
36
|
- examples/producer.rb
|
34
37
|
- examples/performance/consumer.rb
|
35
38
|
- examples/performance/producer.rb
|
@@ -42,6 +45,12 @@ files:
|
|
42
45
|
- lib/jms/javax_jms_queue_browser.rb
|
43
46
|
- lib/jms/javax_jms_session.rb
|
44
47
|
- lib/jms/javax_jms_text_message.rb
|
48
|
+
- lib/jms/logger.rb
|
49
|
+
- lib/jms/logging.rb
|
50
|
+
- lib/jms/message_listener.rb
|
51
|
+
- test/connection_test.rb
|
52
|
+
- test/jms.yml
|
53
|
+
- test/session_test.rb
|
45
54
|
has_rdoc: true
|
46
55
|
homepage: https://github.com/reidmorrison/jruby-jms
|
47
56
|
licenses: []
|
@@ -52,21 +61,23 @@ rdoc_options: []
|
|
52
61
|
require_paths:
|
53
62
|
- lib
|
54
63
|
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
64
|
requirements:
|
57
65
|
- - ">="
|
58
66
|
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 0
|
59
69
|
version: "0"
|
60
70
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
71
|
requirements:
|
63
72
|
- - ">="
|
64
73
|
- !ruby/object:Gem::Version
|
74
|
+
segments:
|
75
|
+
- 0
|
65
76
|
version: "0"
|
66
77
|
requirements: []
|
67
78
|
|
68
79
|
rubyforge_project:
|
69
|
-
rubygems_version: 1.
|
80
|
+
rubygems_version: 1.3.6
|
70
81
|
signing_key:
|
71
82
|
specification_version: 3
|
72
83
|
summary: JRuby interface into JMS
|
data/examples/log4j.properties
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# log4j properties
|
3
|
-
#
|
4
|
-
|
5
|
-
# Screen only logging
|
6
|
-
log4j.rootLogger=INFO, terminal
|
7
|
-
|
8
|
-
# To enable file logging
|
9
|
-
#log4j.rootLogger=INFO, terminal, out
|
10
|
-
|
11
|
-
# Set logging level for jruby-jms.
|
12
|
-
# Valid values: WARN, INFO, DEBUG, TRACE
|
13
|
-
# TRACE will log every message sent or received. Use with caution
|
14
|
-
log4j.logger.JMS=TRACE
|
15
|
-
|
16
|
-
#The logging properties used during tests..
|
17
|
-
# CONSOLE appender not used by default
|
18
|
-
log4j.appender.terminal=org.apache.log4j.ConsoleAppender
|
19
|
-
log4j.appender.terminal.layout=org.apache.log4j.PatternLayout
|
20
|
-
log4j.appender.terminal.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}] %m%n
|
21
|
-
log4j.appender.terminal.target=System.out
|
22
|
-
#log4j.appender.terminal.threshold=INFO
|
23
|
-
|
24
|
-
# File appender
|
25
|
-
log4j.appender.out=org.apache.log4j.RollingFileAppender
|
26
|
-
log4j.appender.out.file=jruby-jms.log
|
27
|
-
log4j.appender.out.maxFileSize=16384KB
|
28
|
-
log4j.appender.out.maxBackupIndex=5
|
29
|
-
log4j.appender.out.append=true
|
30
|
-
log4j.appender.out.layout=org.apache.log4j.PatternLayout
|
31
|
-
log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-40.40c - %m%n
|