В последнее время стали широко популярны системы мобильного мессенджинга. На данный момент существует большое их количество, например, 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, полностью решающим вопрос коммуникации с приложением, что позволяет уделить больше внимания и времени непосредственно реализации бизнес-логики разрабатываемого решения.
Больше технических деталей Вы узнаете, прочитав нашу статью для разработчиков.
looks good!
We will process the request and contact you.
Now fill in information about yourself: