Имитация персистентности сообщений в SNS с использованием SQS - PullRequest
0 голосов
/ 24 мая 2019

Мы оцениваем SNS для наших требований к обмену сообщениями для интеграции нескольких приложений.у нас есть один производитель, который публикует сообщения на несколько тем по SNS.Каждая тема имеет 2-5 подписчиков.В случае сбоев абонента (не работает из-за технического обслуживания) у меня есть несколько вопросов по рекомендуемой стратегии использования очередей SQS для каждого потребителя

  1. Можно ли настроить SNS на передачу в SQS только в случае сбоя вдоставить сообщение подписчику?Сброс всех сообщений в очереди SQS создает проблему для потребителя при анализе перезапуска всех сообщений в очереди.
  2. В случае сбоя подписчика он может при перезапуске прочитать сообщения из очереди SQS, но как он узнаетчто он пропустил сообщения от SNS, когда он был перегружен?

Любые предложения по обработке сбоев абонента приветствуются.

Спасибо!

1 Ответ

1 голос
/ 24 мая 2019

Нет, невозможно «настроить SNS для отправки в SQS только в случае сбоя».

Вместо того, чтобы пытаться восстановить сообщение после сбоя, вы можете настроить Amazon SNS.политики повторных попыток .

с Настройка политик повторной доставки Amazon SNS для конечных точек HTTP / HTTPS :

Вы можете использовать политики доставки для управления не толькообщее количество попыток, а также задержка между каждой попыткой.Вы можете указать до 100 повторных попыток, распределенных между четырьмя отдельными фазами. Максимальное время жизни сообщения в системе составляет один час. Этот предел в один час не может быть продлен политикой доставки.

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

Если он может оставаться в автономном режиме более часа, вам потребуется найти способ хранения и «воспроизведения» сообщений, возможно, путем проверки CloudWatch Logs .

Или вот еще одна идея ...

Сначала нажмите на SQS.Иметь лямбда-функцию AWS, запускаемую SQS.Лямбда-функция может выполнять «толчок», который обычно выполняется SNS.Если произойдет сбой, стандартный процесс невидимости SQS попытается повторить его позже, в конечном итоге перейдя в очередь недоставленных сообщений.

...