Использование RabbitMQ в чат приложениях и архитектуре мессенджеров

rabbitmq for mobile messenger Использование RabbitMQ в чат приложениях и архитектуре мессенджеров
5/5 - (5 голоса)

 
В последнее время стали широко популярны системы мобильного мессенджинга. На данный момент существует большое их количество, например, Skype, Viber, WhatsApp, Telegram, SnapChat, каждый из которых имеет свои премущества и недостатки.
 
Можно сказать с уверенностью, что, чтобы занять свое место среди популярных мессенджеров, приложение должно не только иметь безупречный дизайн, но также надежно работать, выдерживая большие нагрузки и пики пользовательской активности.

Реализация данной функциональности требует не только значительного времени на разработку и тестирование и высокого уровня квалификации разработчиков, но и интеграцию с надежными платформами для рассылки сообщений между клиентами.
 
В нашем случае наиболее оптимальным способом было использование open-source брокера сообщений RabbitMQ, который  поддерживает различные протоколы пересылки сообщений, а также имеет большое количество клиентских библиотек, которые позволяют интегрировать его с популярными мобильными платформами (Android, iOS).

Данное решение позволило уделить больше внимания разработке архитектуры и бизнес-логики приложения и гарантировать стабильную работу отправки сообщений и легкое маштабирование.

 
RabbitMQ позволяет легко реализовать следующие функции:

— групповые чаты;
— проверка доставки сообщений;
— получение пользователем сообщения в режиме офлайн;
— получение сообщения одновременно на всех клиентских приложениях (iOS, Android);
— предотвращение лишних отправок сообщений и максимальная оптимизация рассылки при потере соединения с RabbitMQ, например, при отключении от интернета.
 

В то же время в процессе разработки не обходится без определенных сложностей.

Так, в процессе разработки системы наша команда успешно реализовала коммуникацию RabbitMQ с серверной частью, а также коммуникацию с Android приложением по протоколу AMQP.

Для iOS мы рассчитывали использовать библиотеку (AMQP Objective-C wrapper for librabbitmq-c), но с ней оказалось много скрытых проблем и багов и данная проблема была решена заменой AMQP протокола на MQTT.

Надо заметить, что с клиентской библиотекой на Android подобных трудностей не возникало.
 
Также перед нами возникла сложность с правильностью конфигурации доставки сообщений пользователям, что требовало выбора правильного Quality of service (QoS).

В итоге система получилась надежной, выдерживающей высокие нагрузки и их увеличение в связи с расширением пользовательской базы или во время пиков пользовательской активности.

Использование RabbitMQ в архитектуре приложений-мессенджеров способствует решению задачи пересылки сообщений с поддержкой многопользовательских диалогов и пользователей с множеством одновременно включенных клиентов при написании минимального количества кода в серверном приложении.

Таким образом, брокер сообщений RabbitMQ является эффективным решением для разработки мессенджеров и реализации многих других задач из сферы IoT, полностью решающим вопрос коммуникации с приложением, что позволяет уделить больше внимания и времени непосредственно реализации бизнес-логики разрабатываемого решения.

 
Больше технических деталей Вы узнаете, прочитав нашу статью для разработчиков.

5/5 - (5 голоса)
×