Очереди сообщений
Проектирование и разработка распределенных программных систем, лекция 5
Бэкенд постоянно ждет
Когда не нужно дожидаться завершения задачи
Откладываем эти задачи с помощью очереди сообщений
Очереди сообщений
Термины в AMQP
Термины в AMQP
Как это работает (протокол AMQP)
Producer и Consumer
Producer не знает, в какую очередь он пишет. Он просто отправляет событие в exchange.
Consumer знает, из какой очереди он читает.
Типы exchange
Плюсы очередей
Плюсы очередей
Важные моменты
Persistence
Очередь сообщений становится еще одной БД. Нужно сохранять ее состояние на диск, чтобы восстановить состояние после перезагрузки или падения.
Ack(nowledgment)s
Консьюмер может отваливаться во время обработки сообщения. Тогда сообщение должен обработать другой консьюмер (или тот же после восстановления).
Для этого есть механизм acks: консьюмер блокирует сообщение на время обработки, а потом сообщает, что его можно удалить.
Пакетная обработка
Консьюмер может работать эффективнее, если будет доставать из очереди несколько сообщений сразу и обрабатывать их вместе.
Отдельные консьюмеры для важных задач
Переполнение очередей
Flow control
Ссылки
Принципы и приёмы обработки очередей: https://habr.com/ru/company/oleg-bunin/blog/309332/
101 способ приготовления RabbitMQ и немного о pipeline архитектуре: https://habr.com/ru/company/oleg-bunin/blog/310418/
Очереди и блокировки. Теория и практика: https://habr.com/ru/company/oleg-bunin/blog/316458/