1 - fire up out of the box activemq installation. Literally that easy, just run bin/activemq &
2 - copy activemq-all-5.1.0.jar from activemq installation directory to the same directory as your JRuby scripts
3 - create the 2 scripts below , consumer.rb and producer.rb and you are off and running. For the Rails enthusiasts , I can imagine a very nice replacement for ActiveMessaging where you create a simple JMS library that will do an async post of messages to the queue, very nice indeed.
4 - Run each script in a separate window (jruby consumer.rb AND jruby producer.rb). Producer.rb will simply give you a ">" prompt to type some text to demonstrate the concept
Here is the code I ended up with:
consumer.rb
------------------------
require "java"
require "activemq-all-5.1.0.jar"
include_class "org.apache.activemq.ActiveMQConnectionFactory"
include_class "org.apache.activemq.util.ByteSequence"
include_class "org.apache.activemq.command.ActiveMQBytesMessage"
include_class "javax.jms.MessageListener"
include_class "javax.jms.Session"
class MessageHandler
include javax.jms.Session
include javax.jms.MessageListener
def onMessage(serialized_message)
message_body = serialized_message.get_content.get_data.inject("") { |body, byte| body << byte }
puts message_body
end
def run
factory = ActiveMQConnectionFactory.new("tcp://localhost:61616")
connection = factory.create_connection();
session = connection.create_session(false, Session::AUTO_ACKNOWLEDGE);
queue = session.create_queue("test1-queue");
consumer = session.create_consumer(queue);
consumer.set_message_listener(self);
connection.start();
puts "Listening..."
end
end
handler = MessageHandler.new
handler.run
producer.rb
--------------
require "java"
require "activemq-all-5.1.0.jar"
require 'readline'
include_class "org.apache.activemq.ActiveMQConnectionFactory"
include_class "org.apache.activemq.util.ByteSequence"
include_class "org.apache.activemq.command.ActiveMQBytesMessage"
include_class "javax.jms.MessageListener"
include_class "javax.jms.Session"
class MessageHandler
include javax.jms.Session
include javax.jms.MessageListener
def initialize
factory = ActiveMQConnectionFactory.new("tcp://localhost:61616")
connection = factory.create_connection();
@session = connection.create_session(false, Session::AUTO_ACKNOWLEDGE);
queue = @session.create_queue("test1-queue");
@producer = @session.create_producer(queue);
end
def send_message(line)
puts "received input of #{line}"
m = @session.createTextMessage() ;
m.set_text(line)
@producer.send(m)
end
end
handler = MessageHandler.new
loop do
line = Readline::readline('> ', true)
handler.send_message(line)
end
8 comments:
Great post, very useful, as usually people limit to textMessage, as opposite to bytesMessage, as you do.
Just to know: are really necessaries the include_class you put in the header? Is it not sufficient the require 'activemq-all.jar'
Interesting Article
JMS training | Java Online Training
Java Training in Chennai | JMS training online
Thank you for some other informative website. I have a venture that I am simply now running on, and I’ve been at the glance out for such info.
Data entry services in India
It is explained in clear way. It is very easy to understand the information.
Looking for Cloud Computing Training in Bangalore , learn from eTechno Soft Solutions Cloud Computing Training on online training and classroom training. Join today!
I have read your blog its very attractive and impressive. Nice information. It helped me alot.
Government vacancy
Govt Jobs
Sarkari nokri
latest sarkari vacancy
Online Form
latest govt jobs
Thanks for your informative article, Your post helped me to understand the future and career prospects & Keep on updating your blog with such awesome article. DevOps Training | Certification in Chennai | DevOps Training | Certification in anna nagar | DevOps Training | Certification in omr | DevOps Training | Certification in porur | DevOps Training | Certification in tambaram | DevOps Training | Certification in velachery
First i got a great blog .I will be interested in more similar topics. i see you got really very useful topics, i will be always checking your blog thanks.
sap training in chennai
sap training in porur
azure training in chennai
azure training in porur
cyber security course in chennai
cyber security course in porur
ethical hacking course in chennai
ethical hacking course in porur
Really you have done great job,There are may person searching about that now they will find enough resources by your post
Best Devops online Training
Online DevOps Certification Course - Gangboard
Post a Comment