Политики повторных попыток доставки Amazon SNS для SQS

Мы реализуем схему разветвления AWS, используя тему SNS с несколькими подписчиками очереди SQS. Мне было интересно, что произойдет, если я успешно опубликую сообщение в теме SNS, но оно не сможет (по какой-то причине) переслать его в очередь (и). Будет ли SNS повторять попытку, и если да, есть ли способ это контролировать.

Я нашел эту страницу http://docs.aws.amazon.com/sns/latest/dg/DeliveryPolicies.html, в котором говорится о настройке политик повторных попыток для конечных точек SNS HTTP / HTTPS, но на SQS ничего нет.


person grigori    schedule 10.06.2015    source источник


Ответы (4)


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

person George Lin    schedule 15.06.2015
comment
Привет, Джордж, ты действительно сотрудник Amazon AWS? Причина моего вопроса заключается в том, что информация, которую я получил, была получена от архитектора решений AWS, нанятого Amazon, который был непреклонен в том, что SNS будет повторять попытки 3 раза, а затем потерпит неудачу! - person grigori; 18.06.2015
comment
если вы прочитали раздел «Политика доставки через SNS», то увидите, что вы можете настроить, сколько раз будет повторяться попытка (по умолчанию 3) и интервалы между повторными попытками: docs.aws.amazon.com/sns/latest/dg/DeliveryPolicies.html - person Marko; 16.12.2015
comment
как насчет aws лямбда? - person polvoazul; 19.09.2016
comment
Мы используем SNS поверх SQS, и некоторые подписчики не получают сообщения. Однако наша политика доставки предусматривает 10 повторных попыток. - person Eugene Retunsky; 13.10.2016
comment
как sns узнает, успешно ли доставлено сообщение подписчику? - person rahul sharma; 29.11.2020

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

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

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

SQS: если очередь SQS недоступна, SNS будет повторять 10 раз немедленно, затем 100 000 раз каждые 20 секунд, всего 100 010 попыток в течение более чем 23 дней, прежде чем сообщение будет отклонено из SNS.

На это указал @grigori в комментарии.

person Keet Sugathadasa    schedule 18.04.2018

SQS и SNS были единой командой еще в 2013 и 2014 годах, когда я был разработчиком в этой команде. Как отметил Джордж Лин, серверная часть SNS, отвечающая за доставку, действительно повторяет тысячи раз для очередей SQS (точное число было 100000 раз, но могло измениться). Существует неявная политика отсрочки. В самой первой попытке будет несколько тысяч повторных попыток в очень плотном цикле без задержки. Если это не удается, существует политика отката, чтобы постепенно попытаться выполнить поставку с течением времени. Вообще говоря, доставка на конечные точки SQS редко терпит неудачу.

person Vijai at LyfBits    schedule 21.10.2016

AWS гарантирует доставку в SQS, поэтому вам не нужно об этом беспокоиться:

В: Гарантирует ли Amazon SNS, что сообщения будут доставлены на подписанную конечную точку?

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

http://aws.amazon.com/sns/faqs/

person E.J. Brennan    schedule 10.06.2015
comment
Я обратился к архитектору решений AWS в Австралии, и их позиция в отношении гарантии доставки заключается в том, что в случае, если SQS недоступен по какой-либо причине - при любой очень небольшой возможности отказа - SNS попытается 3 раза, но если SQS не восстановится вовремя, то ваше намерение поместить сообщение в очередь может не быть выполнено. - person grigori; 11.06.2015
comment
@grigori, значит, это неверный ответ? вы нашли способ гарантировать доставку? - person Crashalot; 23.03.2016