This blog is about Integration and other IT related stuff

What is RabbitMQ Part1

As a BizTalk freak I have take a look at a new to me, message broker called RabbitMQ and I really liked it. I will try to blog about my findings in this open source project and how we could use this in terms of integration patterns but for now a brief overview.

What is RabbitMQ Then?

RabbitMQ is a message bus built in Erlang and is built on the Open Telecom Platform framework for clustering and failover, It implements the AMQP protocol which, unlike JMS, is also a wire protocol and not just an API.This means that you can use an AMQP client with any compliant AMQP server. AMQP has a few concepts which are different from other messaging infrastructures as MSMQ or MQSeries.

The architecture of AMQP

The basic architecture is simple, there are client applications called producers that creates messages and deliver it to a AMQP server in this scenario RabbitMQ also called broker. Inside the broker the messages are routed and filtered until arrive to queues where another applications called consumers are connected and get the messages to be processed. The AMQP is also used for Azure Service Bus and on premise, so in this series I will compare this services with RabbitMQ.

The broker exist of this three parts

1. Exchange: where the producer applications delivers the messages, messages have a routing key and exchange uses it to route messages.

2. Queues: where messages are stored and then consumers get the messages from queues.

3. Bindings: makes relations between exchanges and queues.

When exchange get’s a message it uses their routing key and also three different exchange methods to choose where the message is routed:

Direct Exchange: routing key matches the queue name.

Fanout Exchange: the message is cloned and sent to all queues connected to this exchange.

Topic Exchange: for example using wildcards the message can be routed to some of connected queues.

End of RabbitMQ Part1

This is my first blog on this series hope you learn something on this subject, please help me be better if you see anything that’s wrong or even if you like this kind of technical articles please let me now if I should continue with this series.