Message queueing system

1.

Message Queueing System

2.

Системы обмена сообщение - это инструмент разработки программного обеспечения,
который используется для передачи сообщений между различными приложениями и
компонентами системы
Используемые MQS
Apache ActiveMQ
RabbitMQ
Kafka
AWS SNS/SQS

3.

Java Message Service (JMS) — стандарт промежуточного
ПО для рассылки сообщений, позволяющий приложениям
создавать, посылать, получать и читать сообщения.
Коммуникация между компонентами, использующими
JMS асинхронна
JMS поддерживает две модели обмена сообщениями:
«точка - точка» и «издатель-подписчик».
Модель «точка - точка» характеризуется следующим:
Каждое сообщение имеет только одного адресата
Сообщение попадает в «почтовый ящик», или «очередь»
адресата и может быть прочитано когда угодно. Если адресат
не работал в момент отсылки сообщения, сообщение не
пропадёт.
После получения сообщения адресат посылает извещение.
Модель «издатель-подписчик» характеризуется
следующим:
Подписчик подписывается на определённую «тему»
Издатель публикует своё сообщение. Его получают все
подписчики этой темы
Получатель должен работать и быть подписан в момент
отправки сообщения

4.

5.

Реализация спецификации Java Message Service
ActiveMQ поддерживает синхронный и асинхронный режимы отправки сообщений
брокеру.
Компоненты Active MQ
Брокер - центральная часть архитектуры распределяющая сообщения
Клиент - система для получения и обработки сообщений
Wire Protocol - протокол для передачи данных
https://habr.com/ru/articles/471268/
https://www.youtube.com/watch?v=-0La8Dscp6k&t=679s

6.

Использование брокера сообщений - это поиск баланса между скоростью и
безопасностью
В AMQ реализовано несколько стратегий сохранения данных
Для реализации используются внутренние адаптеры персистентности
Для записи на диск
2. Для записи в БД
1.

7.

1.
Брокер получает сообщение
2.
Происходит запись события в лог-журнал на диске
3.
Происходит вычитывание событий в журнале
4.
После успешного прочтения данных данные записи удаляются

8.

ConnectionFactory - интерфейс верхнего уровня, используемый для установления
соединений с брокером. В ActiveMQ — это ActiveMQConnectionFactory.
Connection - долгоживущий объект, существует в течение всего жизненного цикла
приложения до его закрытия. Connection — потокобезопасный и может работать с
несколькими потоками одновременно.
Session — это основной транзакционный дескриптор. Позволяет коммитить/откатывать
операции обмена сообщениями. Используется для создания Message, MessageConsumer
и MessageProducer, а также получает указатели на объекты Topic и Queue.

9.

MessageProducer - интерфейс позволяет отправлять сообщение адресату
MessageConsumer - интерфейс позволяет разработчику получать сообщения. Существует два механизма
извлечения сообщения:
Регистрация MessageListener. Это реализованный вами интерфейс обработчика сообщений, который будет
последовательно обрабатывать любые сообщения, выдаваемые брокером, используя один поток.
Опрос (polling) на наличие сообщений с помощью метода receive ().
Message - транспорт данных. Сообщения в JMS состоят из двух аспектов:
Метаданные сообщения. Сообщение содержит заголовки и свойства.
Заголовки — это хорошо известные элементы, определенные спецификацией JMS и доступные напрямую
через API,
Свойства — это произвольные фрагменты информации о сообщении, которые задаются для упрощения
обработки или маршрутизации сообщений.
Тело сообщения.

10.

11.

Низкая пропускная способность
Необходимость создавать индексы для работы журнала
Использование одного журнала для всех очередей - создаёт большое количество
конфликтов и блокировок
Если журналах логирования остаются данные, то со временем растёт объём
используемой памяти
English     Русский Правила