RabbitMQ для интеграций Битрикс24: устойчивость к сбоям
Когда в интеграции появляется третья система, а потом пятая — прямые API-вызовы превращаются в клубок зависимостей. RabbitMQ между системами разрубает этот клубок. Разбираем, как правильно использовать.
Зачем вообще RabbitMQ
Битрикс24 и 1С могут разговаривать напрямую. Но что если 1С недоступна 5 минут? При прямом вызове заказ потерян. С RabbitMQ — сообщение в очереди, доставится когда 1С вернётся.
Топология очередей
Используем паттерн topic exchange. Для каждого типа события — отдельная очередь.
crm.lead.created— новый лидcrm.deal.stage_changed— смена стадии сделкиerp.invoice.paid— пришла оплата из 1С
Идемпотентность
Сообщение может прийти дважды. Обработчик должен быть идемпотентным. Храним ID уже обработанных сообщений в Redis с TTL 24 часа.
Dead-letter очередь
Если сообщение не удалось обработать 3 раза — в DLQ. Оттуда — в мониторинг, инженер разбирается, что не так. Никогда не теряем данные.
Мониторинг
Метрики: длина очереди, RPS, lag consumer, ошибки. Алерты при аномалиях. Grafana дашборд обязателен.