Шлюз связывает системы, работающие с разными брокерами сообщений, – RabbitMQ и Apache Kafka. Каждая из систем поддерживает только свой брокер, поэтому напрямую обмениваться данными они не могли. Транзитный шлюз забирает сообщения из одного брокера и передает их в другой. Так работает в обе стороны, при этом сами системы дорабатывать не пришлось.
Правила обмена в шлюзе настраиваются, а не программируются: администратор задает, из каких топиков Kafka и по каким критериям забирать сообщения и в какие очереди RabbitMQ их передавать, и наоборот. Чтобы принимающая система не остановилась из-за пиковой нагрузки или аномального трафика, для каждого направления выставляются лимиты на число сообщений за секунду, минуту или час.
Отдельное внимание уделено надежности доставки. Шлюз повторяет попытки отправки заданное число раз, а если сообщение так и не доставлено, переносит его в очередь недоставленных сообщений (Dead Letter Queue). Оттуда сотрудники могут проанализировать сообщение и отправить его повторно, поэтому данные не теряются. Права на настройку маршрутов и разбор недоставленных сообщений разграничены ролевой моделью.
Задача, которую решили в «Солид Инвестиции», типична для крупных организаций: системы внедряются в разное время и разными командами, а Kafka и RabbitMQ остаются самыми распространенными брокерами сообщений в корпоративной среде. Вынести связку в отдельный интеграционный слой быстрее и дешевле, чем переписывать каждую систему под чужой протокол.
«Нам нужно было связать системы, которые изначально строились на разных брокерах, и при этом не переписывать ни одну из них. «Диасофт» решил эту задачу без вмешательства в работающие системы. Лимиты и очередь недоставленных сообщений дают нам уверенность, что при пиковой нагрузке данные не потеряются», – отметил Дмитрий Федотов, директор департамента информационных технологий «Солид Инвестиции».
«Связать два брокера технически несложно. Сложно сделать так, чтобы связка выдерживала нагрузку, не теряла сообщения и управлялась без участия разработчиков. Поэтому лимиты, повторная доставка и разбор ошибок заложены в шлюз с самого начала», – пояснил Виктор Овчинников, руководитель продукта «Интеграционная платформа» компании «Диасофт».
Шлюз реализован на интеграционной платформе Digital Q.Integration от «Диасофт». Платформа включена в реестр российского программного обеспечения (№22375).
«Солид Инвестиции» и «Диасофт» планируют дальше развивать сотрудничество в направлении автоматизации бизнес-процессов компании.