Брокеры сообщений
t.me/qa_chillout
Брокеры сообщений играют важную роль в современных архитектурах программного обеспечения, обеспечивая коммуникацию и обмен данными между различными компонентами распределенных систем. Этот механизм позволяет разгрузить веб-сервисы от задачи пересылки сообщений, поскольку он берет на себя всю необходимую для этого работу.
Как работают брокеры сообщений
В работе каждого брокера сообщений обычно присутствуют два ключевых участника: производитель (producer или издатель сообщений) и потребитель (consumer или подписчик).
Производитель ответственен за создание и передачу сообщений, а потребитель – за их прием и обработку. Между ними существует посредник, называемый брокером, который обеспечивает надежную доставку сообщений от производителя к потребителю. Этот процесс осуществляется через промежуточную точку, такую как очередь сообщений, где хранятся и ожидают обработки переданные сообщения.
Такая архитектура дает возможность управлять потоком данных и обеспечивает масштабируемость и отказоустойчивость системы. Применение брокеров сообщений широко распространено в различных областях, включая финансовый сектор, телекоммуникации, интернет-сервисы и многое другое.
Способы взаимодействия
- Прямая отправка сообщения от отправителя к получателю
В этом случае сообщение передается непосредственно от отправителя к получателю без посредников. Однако каждое сообщение используется только однократно и прямо для этой передачи.
Пример: почтовая система электронной почты, где отправитель отправляет письмо непосредственно адресату.

- Схема публикации/подписки
В этой схеме отправитель не обращается к конкретному получателю, а публикует сообщения в определенной теме или канале. Потребители, подписанные на эту тему или канал, получают эти сообщения. Данная схема позволяет строить системы распределения задач между подписчиками, где разные потребители могут получать сообщения из одной темы для выполнения уникальных задач.
Пример: система уведомлений, где различные приложения подписываются на уведомления об определенных событиях, и приложение, публикующее эти события, не знает о конкретных получателях.

Распространенные брокеры сообщений
Существует множество брокеров сообщений, каждый из которых имеет свои особенности и предназначен для различных целей.
- Apache Kafka
Это распределенная система потоковых данных, способная обрабатывать огромные объемы данных и обеспечивать высокую пропускную способность и отказоустойчивость. Ориентирована на обработку сообщений в реальном времени. Чаще всего используется для обработки потоковых данных в крупных компаниях.
Kafka поддерживает темы и партиции, обеспечивая масштабируемость и отказоустойчивость. Он также обеспечивает возможность повторной обработки сообщений и разделения потоков данных для обработки различными приложениями.
- RabbitMQ
Очередь сообщений, реализующая протокол AMQP (Advanced Message Queuing Protocol). Обеспечивает гарантированную доставку сообщений, маршрутизацию и управление сообщениями. Часто используется в приложениях, где необходима надежная доставка сообщений, таких как системы мониторинга, уведомления и обработка заказов. RabbitMQ поддерживает различные типы обмена сообщениями, такие как direct, topic, fanout, что позволяет гибко настраивать маршрутизацию сообщений.
- Apache ActiveMQ
Довольно мощный брокер сообщений, поддерживающий множество протоколов связи, включая OpenWire, MQTT, STOMP, AMQP. Обеспечивает высокую пропускную способность и надежную доставку сообщений. Широко используется в приложениях финансового сектора, системах мониторинга и управления. ActiveMQ предлагает богатый набор функций, таких как маршрутизация сообщений, точки обмена, темы и очереди, а также поддерживает кластеризацию для обеспечения масштабируемости и отказоустойчивости.
Применении в тестировании
Допустим, у нас есть система с заказами пользователей, которая генерирует события каждый раз, когда происходит запрос к серверу. В этом случае, Kafka может использоваться для потоковой обработки этих событий.
Пример события, которое мы хотели бы посмотреть в Kafka:
Событие: «Запрос к серверу»
- Тип события: «HTTP запрос»
- Данные события:URL запроса
- Метод запроса (GET, POST, PUT, DELETE и т.д.)
- Время запроса
- Код ответа сервера
- Размер ответа
- IP адрес клиента
Когда эти события публикуются в Kafka, тестировщик может подписаться на топик событий и использовать инструменты для потокового анализа, такие как Kafka Streams или Spark Streaming, чтобы проанализировать их.
Пример задач, которые тестировщик может решить, просматривая события в Kafka:
- Мониторинг производительности – анализ частоты и времени ответа на запросы, чтобы выявить узкие места в производительности веб-приложения.
- Отслеживание ошибок – поиск HTTP кодов ответа, указывающих на ошибки сервера (например, коды 5xx), и выявление проблем в работе приложения.
- Анализ трафика – просмотр IP адресов клиентов и URL запросов для выявления популярных страниц или проблемных участков сайта.
- Тестирование соответствия – проверка, что ответы сервера соответствуют ожидаемым значениям (например, верные коды ответа и размеры ответа).
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».