Using RabbitMQ in chat applications and messenger app architecture

rabbitmq for mobile messenger Using RabbitMQ in chat applications and messenger app architecture

Mobile messengers have become very popular recently. At the moment, there are plenty of mobile messengers, such as Viber, WhatsApp, or Telegram, each having its pros and cons. Certainly, in order to take a high place among popular messengers, an application must have not only perfect design and reliable performance, but also be easily scalable and able to support heavy loads with the increase of user base.
Implementing such functionality is a real challenge, as it requires not only a lot of time for development and testing, and high qualification of developers, but also integration with reliable platforms for message delivery.
In our case the best way was to use an open-source message broker RabbitMQ which supports different protocols of message delivery and has plenty of client libraries allowing to integrate it with popular mobile platforms (Android, iOS). This solution allowed us to pay more attention to architecture and business logic development
and ensure stable work of messages delivery and easy scaling.

RabbitMQ allows to easily implement the following functions:

– group chats;
– message delivery check;
– receiving message by user while offline;
– receiving message on all client applications at the same time (iOS, Android);
– preventing unnecessary messages sending, as well as message delivery optimization in case of disconnection from RabbitMQ, e.g. during Internet cut-off.

At the same time the development process always has some challenges.

For example, during the development process our team had to implement communication of RabbitMQ with the server side, as well as communication with Android application using AMQP protocol. At first, we were planning to use AMQP Objective-C wrapper for librabbitmq-c) library for iOS, but it turned out to have lots of latent problems and bugs – this problem was solved by replacing AMQP protocol with MQTT. It should be noted that we didn’t have such difficulties with client library on Android. Also we had a challenge of correct configuration of message delivery to users, which required the right choice of Quality of service (QoS). As a result, we developed a reliable system supporting heavy loads and their increase due to the expansion of user base and user activity peaks.

Using RabbitMQ in message application architecture helps to solve the problem of message delivery with support of multi user conversations and users with several clients switched on at the same time, with writing minimum of code in the server application.

Thus, RabbitMQ message broker is an effective solution for messenger development and implementation of many other tasks relating to IoT. It completely solves the issue of communication with the application, which allows to pay more attention and time for business logic implementation of the messenger app.


You can read more technical details in our article for developers.

Using RabbitMQ in chat applications and messenger app architecture
5 (100%) 2 votes

We're moving to our new site. Check out our new slick design! Let's do it!