Это анти-паттерн для отправки асинхронного сообщения "себе"

Для обеспечения отказоустойчивости и надежности иногда в нашей архитектуре мы предпочитаем, чтобы служба отправляла сообщение в очередь SQS, которую оно потребляет из себя.

Это своего рода надежный асинхронный способ обработки события.

Идея состоит в том, что если мы собираемся выполнить операцию, которая имеет внешние последствия, такие как отправка электронного письма, вызов API и т. Д.... но мы не возражаем против того, чтобы это произошло на более позднем этапе, мы использовали бы это, чтобы, если Ошибка вызова: сообщение не будет подтверждено и будет повторено в соответствии с политикой доставки в очередь. Это переживет также системный сбой - например, сервис перестанет работать между генерацией сообщения и его обработкой, а когда он вернется позже, он будет использовать сообщение и попытаться снова.

Я понимаю, что могут быть сценарии, когда сообщения могут быть доставлены более одного раза, что может привести к обработке дублирующихся событий, если код не может обнаружить это (например, двойная отправка электронной почты) - но меня больше интересует, будет ли это рассматриваться анти-шаблон?

0 ответов

Другие вопросы по тегам