InfoQ Article: Introduction to ActiveMessaging
ActiveMessaging is especially interesting to Rails developers in the enterprise, because through its support for Stomp and StompConnect it allows easy interoperability with Apache's ActiveMQ messaging server and any other enterprise messaging server that supports JMS.
Our easy-to-follow introductory article assumes basic knowledge of Ruby on Rails and messaging concepts, and has code samples and all the instructions you need to get started using ActiveMessaging.
Read InfoQ's Introduction to ActiveMessaging today.
Great article!
by
James Strachan
James
LogicBlaze
Open Source SOA
Performance/Throughput?
by
Stefan Tilkov
Re: Performance/Throughput?
by
Andrew Kuklewicz
So I don't know exactly what the a13g overhead is, or how it scales. I have a feeling this may depend much more on your message broker, and then what you do in the message processor. These kind of tests are a bit tricky as you are testing the network, the broker, the box, etc.
That said, it would be good to design a benchmark, perhaps based off the work done at ActiveMQ.
I can say that anecdotally, I find the processing of the message to take longer than the overhead in dispatch - we even do synchronous messages from our java app to our rails app and back.
One other nice thing is that you can run multiple instances of the poller process, so with N number of pollers all listening to the same queue, you in theory have as much scalability as you have processing power, and depending on the efficiency of the broker dispatch.
Cheers,
Andrew Kuklewicz
Now, we can only push the messages to the views
by
hemant kumar
Re: Now, we can only push the messages to the views
by
Andrew Kuklewicz
Personally I am very tempted to mess with the juggernaut juggernaut.rubyforge.org/ solution, I just haven't had an excuse.
From what I understand it involves a separate "push server" that sits between a rails server app, and the flash apps on the browser. I see no reason a processor in a13g couldn't send a message to the juggernaut push server that would then get pushed up to the browser - if you give it a try let me know - it looks awful cool.
Re: Now, we can only push the messages to the views
by
James Strachan
This work is awesome, and all we need is a way to push these messages to the browser, so that browser doesn't poll for it. any ideas on this?
We've had that part solved for a while using a cometd style integration using ActiveMQ and Jetty...
activemq.apache.org/ajax.html
In benchmarks for customers we've had a single process handling 14,000 concurrent users
James
LogicBlaze
Open Source SOA
Re: Now, we can only push the messages to the views
by
hemant kumar
Excellent!
by
Lee Zieke
mysql> select * from messages;
+----+--------------+---------------------+
| id | body | received_date |
+----+--------------+---------------------+
| 1 | Hello World | 0000-00-00 00:00:00 |
| 2 | testDateTime | 0000-00-00 00:00:00 |
+----+--------------+---------------------+
FIELD received_date, it supposed to be DateTime at which message were generated.
Please take a look at on_message
Re: Now, we can only push the messages to the views
by
James Cook
Re: Excellent!
by
Andrew Kuklewicz
def on_message(message)
logger.debug "PersistMessageProcessor received: " + message
my_message = Message.create(:body=>message, :received_date=>DateTime.new)
end
should be
:received_date=>DateTime.nownot
:received_date=>DateTime.new
Cheers,
-Andrew Kuklewicz
Errors
by
Denis Labelle
I followed along with the example, however when posting the message from the view, the server outputs the following message (infinitely, it would appear):
transmit failed: undefined method `length' for #<Message:0x45f89b8>
transmit failed: undefined method `length' for #<Message:0x45f89b8>
transmit failed: undefined method `length' for #<Message:0x45f89b8>
...
My poller runs fine:
Loading D:/dev/ruby/Mess/app/processors/application.rb
Loading D:/dev/ruby/Mess/app/processors/persist_message_processor.rb
=> Subscribing to /queue/PersistMessage (processed by
PersistMessageProcessor)
I don't see a message in either the poller console, or the activemq console.
I changed the broker.yml configuration to look at denis:61613 instead of localhost because when activemq starts, it states:
...
INFO TransportServerThreadSupport - Listening for connections at: tcp://denis:61616
INFO TransportConnector - Connector openwire Started
INFO TransportServerThreadSupport - Listening for connections at: ssl://denis:61617
INFO TransportConnector - Connector ssl Started
INFO TransportServerThreadSupport - Listening for connections at: stomp://denis:61613
INFO TransportConnector - Connector stomp Started
INFO TransportServerThreadSupport - Listening for connections at: xmpp://denis:61222
INFO TransportConnector - Connector xmpp Started
...
Any ideas?
Thx,
dl
Re: Errors
by
Denis Labelle
def new
@message = params[:message]
...
end
was
def new
@message = Message.new(params[:message])
...
end
Re: Now, we can only push the messages to the views
by
Chong Francis
Re: Now, we can only push the messages to the views
by
Alex MacCaw
Not true, Juggernaut can use port 443 which is open on most firewall (used for https).
Re: Now, we can only push the messages to the views
by
Alex MacCaw
Ghost consumers lingering after script/poller stop?
by
Brian Balser
script/poller start
sleep 30
script/poller stop
Re: Errors
by
Ajay Nayak
I have followed all your steps to config to code.
But when i am running "script/poller run"
I am not getting desirable log in console.
Only getting as :
^C^[[Aajay-dhandes-imac:MessageMonster mrunalini$ script/poller run
/Users/mrunalini/.gem/ruby/1.8/gems/stomp-1.1.3/lib/stomp/connection.rb:156: warning: parenthesize argument(s) for future version
ActiveMessaging: adapter wmq not loaded: no such file to load -- wmq/wmq
"/Users/mrunalini/code/MessageMonster"
"/Users/mrunalini/code/MessageMonster/config/messaging.rb"
ActiveMessaging: Loading /Users/mrunalini/code/MessageMonster/app/processors/application.rb
ActiveMessaging: Loading /Users/mrunalini/code/MessageMonster/app/processors/persist_message_processor.rb
Missing the Rails 2.3.3 gem. Please `gem install -v=2.3.3 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
My development environment is Mac OSX Leapord.
Please post suitable solutions for me.
Thanks,
Ajay nayak
Educational Content
Co-making Great Products
Jeff Patton May 22, 2013




Hello stranger!
You need to Register an InfoQ account or Login to post comments. But there's so much more behind being registered.Get the most out of the InfoQ experience.
Tell us what you think