- Контролируемый повтор сообщения в случае коллизий consumer-а
- Отложенные сообщения
- Сообщения по расписанию (scheduler)
- Автоматически развёртывать DLX инфрастуктуру
- Автоматически создавать очереди в момент чтения или записи сообщения
- Удалять очереди и завершать работу consumer-ов при помощи kill-signal
- Асинхронно обрабатывать сообщения из очереди
ВАЖНО: Обращение к RabbitMQ по сети обёрнуто в backoff с лимитом таймаута
При помощи механизма DLX интерфейс реализует следующий функционал:
-
Единая точка входа всех сообщений с возможностью установки delay (отложенная обработка сообщений)
-
Повторная обработка сообщений в случае коллизий с ограничением числа повторов
- Клонировать проект
- Установить зависимости
poetry install
- Запустить RabbitMQ
docker-compose up -d
- В src/use_case добавить .env файл (образец в src/use_case/.env_example)
После этого можно запустить демонстрационные файлы:
- src/use_case/consumer.py (демонстрирует работу consumer-а)
- src/use_case/pub_casual_message.py (демонстрирует публикацию обычных сообщений)
- src/use_case/pub_delayed_message.py (демонстрирует публикацию отложенных сообщений)
- src/use_case/pub_kill_signal_message.py (демонстрирует публикацию kill-signal)
- Усовершенствовать механизм выключения consumer-ов. Сейчас kill_signal может выключить только ОДИН consumer. Это удобно для разовых очередей (например для работы с WebSocket). Нужно доработать механизм для выключения ВСЕХ имеющихся consumer-ов у очереди (их может быть много).