Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Amazon vuelve a intentarlo con la entrega de SNS mensajes
Amazon SNS define una política de entrega para cada protocolo de entrega. La política de entrega define cómo Amazon SNS vuelve a intentar la entrega de los mensajes cuando se producen errores en el servidor (cuando el sistema que aloja el punto final suscrito deja de estar disponible). Cuando se agota la política de entrega, Amazon SNS deja de volver a intentar la entrega y descarta el mensaje, a menos que se añada una cola de letra muerta a la suscripción. Para obtener más información, consulte Colas de SNS cartas muertas de Amazon.
Temas
Protocolos y políticas de entrega
nota
-
Con la excepción de las políticas personalizadas HTTP/S, you can't change Amazon SNS-defined delivery policies. Only HTTP/S que admite. Consulte Crear una política de entrega de HTTP /S.
-
Amazon SNS aplica la fluctuación a los reintentos de entrega. Para obtener más información, consulte la publicación Retroceso exponencial y fluctuación de retardo
del blog de arquitectura de AWS . -
El tiempo total de reintento de la política para un punto final HTTP /S no puede ser superior a 3.600 segundos. Se trata de un límite codificado y no se puede aumentar.
Tipo de punto de conexión | Protocolos de entrega | Fase de reintento inmediato (sin retraso) | Fase previa a la regresión | Fase de regresión | Fase posterior a la regresión | Total de intentos |
---|---|---|---|---|---|---|
AWS puntos finales gestionados | Amazon Data Firehose¹ | 3 veces, sin retraso | 2 veces, 1 segundo de diferencia | 10 veces, con retardo exponencial, de 1 segundo a 20 segundos | 100 000 veces, con 20 segundos de diferencia | 100 015 veces, durante 23 días |
AWS Lambda | ||||||
Amazon SQS | ||||||
Puntos de enlace administrados por el cliente | SMTP | 0 veces, sin demora | 2 veces, 10 segundos de diferencia | 10 veces, con retardo exponencial, de 10 segundos a 600 segundos (10 minutos) | 38 veces, 600 segundos (10 minutos) de diferencia | 50 intentos, durante 6 horas |
SMS | ||||||
Inserción en móvil |
¹ Para limitar los errores con el protocolo Firehose, Amazon SNS utiliza la misma política de entrega que para los puntos de conexión gestionados por el cliente.
Fases de la política de entrega
En el siguiente diagrama, se muestran las fases de una política de entrega.
Cada política de entrega se compone de cuatro fases.
-
Fase de reintento inmediato (sin retraso): esta fase se produce inmediatamente después del intento inicial de entrega. No hay un plazo de tiempo entre los reintentos de esta fase.
-
Fase previa al retroceso: esta fase sigue a la fase de reintento inmediato. Amazon SNS utiliza esta fase para intentar una serie de reintentos antes de aplicar una función de retroceso. En esta fase se especifica el número de reintentos y el tiempo de retraso entre ellos.
-
Fase de retroceso: en esta fase, se controla el retraso entre reintentos mediante la función de retry-backoff. En esta fase, se establece el retraso mínimo, el retraso máximo y la función retry-backoff, que define con qué rapidez van a ir aumentando los retrasos desde el valor mínimo hasta alcanzar el retraso máximo. La función de retardo puede ser aritmética, exponencial, geométrica o lineal.
-
Fase posterior al retroceso: esta fase sigue a la fase de retroceso. Especifica un número de reintentos y el tiempo de retraso entre ellos. Esta es la fase final.
Crear una política de entrega de HTTP /S
Puedes usar una política de entrega y sus cuatro fases para definir cómo Amazon SNS volverá a intentar la entrega de los mensajes a los puntos de enlace HTTP /S. Amazon te SNS permite anular la política de reintentos predeterminada para los HTTP puntos de conexión cuando, por ejemplo, desees personalizar la política en función de la capacidad de tu HTTP servidor.
Puedes establecer tus HTTP/S delivery policy as a JSON object at the subscription or topic
level. When you define the policy at the topic level, it applies to all HTTP/S suscripciones asociadas al tema. Para configurar la política de entrega a nivel de suscripción, puedes usar la SetSubscriptionAttributes
APIacción Subscribe
o. Para configurar la política de entrega a nivel de tema, puedes usar la SetTopicAttributes
APIacción CreateTopic
o. Como alternativa, también puedes usar el recurso AWS:SNS: :Subscription en tus AWS CloudFormation plantillas.
Debe personalizar su política de entrega de acuerdo con el HTTP/S server's capacity. You can set the policy as a topic attribute or a subscription attribute. If all HTTP/S subscriptions in your topic target the same HTTP/S server, we recommend that you set the delivery policy as a topic attribute, so that it remains valid for all HTTP/S subscriptions in the topic. Otherwise, you must compose a delivery policy for each HTTP/S subscription in your topic, according the capacity of the HTTP/S servidor al que se dirija la política.
También puede establecer el encabezado Content-Type en la política de solicitudes para especificar el tipo de medio de la notificación. De forma predeterminada, Amazon SNS envía todas las notificaciones a los puntos de enlace HTTP /S con el tipo de contenido establecido en. text/plain; charset=UTF-8
Amazon te SNS permite anular la política de solicitudes predeterminada. Consulte la tabla siguiente para conocer el headerContentType admitido y las limitaciones.
El siguiente JSON objeto representa una política de entrega que indica SNS a Amazon que vuelva a intentar un intento de entrega HTTP /S fallido, de la siguiente manera:
-
3 veces inmediatamente en la fase sin retraso
-
2 veces (1 segundo de diferencia) en la fase previa al retardo
-
10 veces (con retardo exponencial de entre 1 segundo y 60 segundos)
-
35 veces (60 segundos de diferencia) en la fase posterior al retroceso.
En este ejemplo de política de entrega, Amazon SNS realiza un total de 50 intentos antes de descartar el mensaje. Para conservar el mensaje una vez agotados los reintentos especificados en la política de entrega, configura tu suscripción para que los mensajes que no se puedan entregar pasen a una cola de cartas sin entrega (). DLQ Para obtener más información, consulte Colas de SNS cartas muertas de Amazon.
nota
Esta política de entrega también indica SNS a Amazon que limite las entregas a no más de 10 por segundo, utilizando la maxReceivesPerSecond
propiedad. Esta velocidad de autorregulación podría provocar que se publiquen más mensajes (tráfico entrante) que los que se entreguen (tráfico saliente). Cuando hay más tráfico entrante que saliente, la suscripción puede acumular una gran cantidad de mensajes atrasados, lo que podría provocar una latencia de entrega de mensajes elevada. En tus políticas de entrega, asegúrese de especificar un valor para maxReceivesPerSecond
que no afecte de manera negativa su carga de trabajo.
nota
Esta política de entrega anula el tipo de contenido predeterminado para la notificación /S a. HTTP application/json
{ "healthyRetryPolicy": { "minDelayTarget": 1, "maxDelayTarget": 60, "numRetries": 50, "numNoDelayRetries": 3, "numMinDelayRetries": 2, "numMaxDelayRetries": 35, "backoffFunction": "exponential" }, "throttlePolicy": { "maxReceivesPerSecond": 10 }, "requestPolicy": { "headerContentType": "application/json" } }
La política de entrega se compone de una política de reintentos, una política de limitación y política de solicitudes. En total, hay nueve atributos en una política de entrega.
Política | Descripción | Constraint |
---|---|---|
minDelayTarget |
Retraso mínimo de un reintento. Unidad: segundos |
Entre 1 y el retraso máximo Valor predeterminado: 20 |
maxDelayTarget |
Retraso máximo de un reintento. Unidad: segundos |
Entre el retraso mínimo y 3600 Valor predeterminado: 20 |
numRetries |
Número total de reintentos, incluidos los reintentos inmediatos, los reintentos previos al retardo y los reintentos posteriores al retardo. | Entre 0 y 100 Predeterminado: 3 |
numNoDelayRetries |
Número de reintentos que se van a realizar inmediatamente, sin retraso entre ellos. | 0 o más Predeterminado: 0 |
numMinDelayRetries |
Número de reintentos en la fase previa al retardo, con el retraso mínimo especificado entre ellos. | 0 o más Predeterminado: 0 |
numMaxDelayRetries |
Número de reintentos en la fase posterior al retardo, con el retraso máximo entre ellos. | 0 o más Predeterminado: 0 |
backoffFunction |
Modelo de retardo entre reintentos. |
Una de las cuatro opciones:
Valor predeterminado: lineal |
maxReceivesPerSecond
|
Número máximo de entregas por segundo y suscripción. | 1 o más Valor predeterminado: sin limitación controlada |
headerContentType
|
El tipo de contenido de la notificación que se envía a los puntos finales HTTP de /S. |
Si no está definida la política de solicitudes, el tipo de contenido será Cuando la entrega de mensajes sin procesar está desactivada para una suscripción (valor predeterminado), o cuando la política de entrega está definida en el nivel de tema, los tipos de contenido de encabezado admitidos son Cuando se activa la entrega de mensajes sin procesar para una suscripción, se admiten los siguientes tipos de contenido:
|
Amazon SNS utiliza la siguiente fórmula para calcular el número de reintentos en la fase de espera:
numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries
Puede utilizar tres parámetros para controlar la frecuencia de los reintentos en la fase de retardo.
-
minDelayTarget
: se utiliza para definir el retraso asociado al primer intento de reintento en la fase de retroceso. -
maxDelayTarget
: se utiliza para definir el retraso asociado al último intento de reintento en la fase de retroceso. -
backoffFunction
— Define el algoritmo que Amazon SNS utiliza para calcular los retrasos asociados a todos los reintentos entre el primer y el último reintento de la fase de espera. Puede utilizar una de las cuatro funciones de retardo.
En el siguiente diagrama, se muestra cómo afecta cada función de retardo al retraso relacionado con los reintentos durante la fase de retardo en una política de entrega con el número total de reintentos establecido en 10, el retraso mínimo establecido en 5 segundos y el retraso máximo establecido en 260 segundos. El eje vertical representa el plazo de tiempo en segundos asociado a cada uno de los 10 reintentos. El eje horizontal representa el número de reintentos, desde el primero hasta el décimo.