Как мы подружили чат между двумя backend’ами
В PDP Mobile сделали двустороннюю синхронизацию чата между нашим backend и внешними CRM. Рассказываем, как устроены Redis-based polling, блокировки и fallback на базу CRM клиента.

В PDP Mobile сделали двустороннюю синхронизацию чата между нашим backend и внешними CRM. Звучит просто, а на деле — как свести два календаря у очень занятых людей 😅
Что под капотом:
— Redis-based polling: каждые 10 секунд проверяем новые сообщения в CRM
— блокировки в Redis: poll выполняет только один воркер, чтобы не ловить дубли и гонки
— 2 источника данных: сначала идём в API внешней CRM, а если оно решило “сегодня не в ресурсе” — используем fallback: прямое чтение из базы CRM клиента
— при WebSocket-событии автоматически обновляем кеш RTK Query, и чат у пользователя освежается без ручных рефрешей
В эпоху, когда все говорят про real-time UX и отказоустойчивость, такой гибридный подход реально спасает: и быстро, и надёжно, и без сюрпризов в проде.