Estoy usando Amazon SES para un proyecto y configuré una regla de recepción para enviar mensajes de SES a SNS. El SNS tiene mi punto final de API como suscriptor, pero para asegurarme de no perder ningún mensaje, también configuré una cola de SQS y suscribí la cola al tema de SNS.
Con esta configuración, recibo cada correo electrónico de SES dos veces. (Uno de SNS y otro con una encuesta en SQS). ¿Hay alguna manera de enviar solo los mensajes SNS fallidos a la cola de SQS para que no tenga que buscar duplicados siempre?
Respuesta corta, no.
Si ha suscrito una cola de SQS a un tema de SNS, recibirá todos los mensajes publicados en este último. SNS no sabe qué mensajes fueron procesados correctamente por su API, por lo que no puede enviarlos de forma selectiva a SQS.
Con su configuración, no es posible hacerlo. Pero hay otros enfoques que puede probar. Puede introducir complejidad en su aplicación, pero vale la pena intentarlo. Algunos de los enfoques se dan a continuación.
SES a SNS y envíe todos los mensajes de SNS a SQS, y sondee SQS para los mensajes. Si algunos fallan, colóquelos en Deadletterqueue (similar a SQS) y sondee esa cola por separado de vez en cuando para buscar mensajes fallidos. Esto hace que los mensajes sean más persistentes, pero un poco ineficaces debido al sondeo.
SES a SNS y permita que SNS use su política de entrega según sea necesario. Puede evitar un SQS y pedirle a SNS que busque el estado de entrega y vuelva a intentarlo si falla. Puede definir la política de reintento según sea necesario y se proporciona eneste enlace . Después de muchos intentos, el mensaje se puede descartar como un fracaso total. También puede escribir en AWS CloudWatch Logs sobre el estado de los reintentos.