Улей: Модуль очереди обмена вебхуками

Описание

[IMG WIDTH=800 HEIGHT=44]https://i.gyazo.com/b2afbd18f9b0b6e67c3dd8bc7a84d09a.png[/IMG]

[B]Варианты применения:[/B]
[LIST]
[*]Отправка запросов к любой сторонней системе, которая может принимать и обрабатывать веб-хуки.
[*]Сторонней системой может быть 1С и любая иная платформа.
[*]Сторонней системой может быть другой портал Битрикс24. Таким образом, можно реализовать межпортальный обмен и их синхронизацию по ряду сущностей.
[/LIST][IMG WIDTH=672 HEIGHT=44]https://i.gyazo.com/1094229e28506352cdddb6878797e9e6.png[/IMG]
[B]
Схема работы стандартных веб-хуков[/B]

Как только происходит событие в Битркис24 (например, создание компании в CRM) формируется веб-хук = URL с параметрами запроса к сторонней системе, куда нужно передать соответствующие данные и тут же “дергается” этот URL. Битрикс24 не ждет никакого ответа от сторонней системы: приняла ли она этот запрос, корректно ли приняла, доступна ли она вообще?

Если принимаемая система была недоступна или не смогла обработать запрос по каким-либо причинам (код ответа отличается от 200), то это приводит к рассинхронизации — нужная информация не будет передана. Так, в нашем примере сторонняя система не получит соответствующую запись о компании. При последующих запросах по обновлению этой записи, рассинхронизация будет увеличиваться лавинообразно, так как система не получила начальных данных или не смогла обработать запрос.

[B]Наше решение[/B]

Наш модуль забирает события в Битрикс24 и формирует веб-хук по тому синтаксису, который обычно принимает входящие веб-хуки. Далее модуль записывает этот вебхук себе в очередь и только после этого пытается его отправить указанной сторонней системе.

[I]При этом, если сторонняя система не доступна или код ответа отличается от 200, то этот запрос не пропадает, он остается в очереди!

Таким образом, наш модуль формирует и сохраняет очередь необработанных запросов, важные данные не пропадают.

[/I]Для избежания “флуда” решение имеет настройку — какое количество запросов отправлять за 1 шаг и период между шагами в секундах. Есть возможность очищать как лог, так и очередь не отправленных запросов.

[IMG WIDTH=834 HEIGHT=695]https://i.gyazo.com/d9d0e484bc0185befca2c9873e6556bd.png[/IMG]

[IMG WIDTH=834 HEIGHT=410]https://i.gyazo.com/b105366e6ebffd781633adcf21e8ba99.png[/IMG]
[I] [/I]

Детали

Разработчик

Тестовый период (дней)