Monday, 21 November 2011

My initial rabbitmq experiment

Last weekend I wanted to spend some time on messaging software available as open source, did some investigations and found a couple of messaging products. I noticed that most of products generally implemented JMS, including Apache ActiveMQ, Jboss Hornet, but RabbitMQ was an exception. It was completely different than those JMS implementations from ground.
First of all, rabbitmq development is focused on a wiring protocol called Advanced Messaging Queing Protocol (AMQP) instead of JMS. To achieve high performance requirements rabbitmq is built on Erlang language. Erlang itself is a functional, interpreted language concentrated on reliability, clustering and immutability of messages. It is not surprising to see guys at rabbitmq made good decision by choosing Erlang as development language of rabbitmq.
As messaging platforms require very low latency figures and clustering, it would not be reasonable to see Java for such a messaging platform. By design Java itself is not a functional language and immutability of objects requires a lot effort, not to mention that Erlang comes with Open Telecom Platform (OTP) tools, which provides a bunch of tools for clustering, distributed communication and database management .
After spending some time on comparison of messaging products and reading reviews. I decided to try rabbitmq on my Windows laptop. I followed rabbitmq windows installation guide, which directed me to Erlang binaries download page, followed Erlang instructions to setup an Erlang environment.
Having Erlang and rabbitmq installed, I tried to use rabbitmq web based management plug-in after invoking rabbitmq-plugins enable rabbitmq_management command at command prompt. Unfortunately for some reason web admin console did not run. Later I decided to use Windows zip distribution instead of Windows service binaries and after downloading and extraction them to C:\BF\rabbitmq_server-2.7.0 folder, I followed well documented rabbitmq configuration guideline and created RABBITMQ_BASE environment variable pointing to C:\BF\rabbitmq_server-2.7.0\RABBITMQ_BASE.
Finally I was able to run rabbitmq via sbin/rabbitmq-server command and see web console screen at http://localhost:55672/#/ with default authentication pair guest/guest provided.
To summarize, my initial rabbitmq impression was good, RabbitMQ is well documented, there are plenty of screencasts, videos and tutorials to accelerate rabbitmq learning curve. It is also worth mentioning that it achieves a high performance throughput and high availability  thanks to underlying Erlang runtime.

RabbitMQ Environment Variable
RabbitMQ Environment Variable
RabbitMQ startup console
RabbitMQ Startup Console
RabbitMQ Web Console
RabbitMQ Web Console

1 comment: