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 Simple Queue Service como origen de canalizaciones de EventBridge
Puede utilizar canalizaciones de EventBridge para recibir registros de una cola de Amazon SQS. A continuación, si lo desea, puede filtrar o enriquecer estos registros antes de enviarlos a un destino disponible para su procesamiento.
Puede utilizar una canalización para procesar mensajes en una cola de Amazon Simple Queue Service (Amazon SQS). Las canalizaciones de EventBridge son compatibles con colas estándar y colas de primero en entrar, primero en salir (FIFO). Con Amazon SQS, puede descargar tareas de un componente de su aplicación enviándolas a una cola para, a continuación, procesarlas de forma asíncrona.
EventBridge sondea la cola e invoca su canalización sincrónicamente con un evento que contiene mensajes de cola. EventBridge lee mensajes en lotes e invoca la canalización una vez por lote. Cuando la canalización procesa correctamente un lote, EventBridge elimina sus mensajes de la cola.
De forma predeterminada, EventBridge sondea hasta 10 mensajes de la cola simultáneamente y envía ese lote a la canalización. Para evitar invocar a la canalización con un número de registros pequeño, puede indicar al origen del evento que almacene en búfer registros hasta 5 minutos configurando una ventana de lote. Antes de invocar la canalización, EventBridge continúa sondeando los mensajes de la cola estándar de Amazon SQS hasta que ocurre una de estas cosas:
La ventana de lote caduca.
Se alcanza la cuota de tamaño de carga de invocación.
Se alcanza el tamaño máximo del lote configurado.
nota
Si utiliza una ventana de lote y la cola de SQS contiene muy poco tráfico, EventBridge puede esperar hasta 20 segundos antes de invocar la canalización. Esto sucederá incluso si establece una ventana de lote inferior a 20 segundos. Para las colas FIFO, los registros contienen atributos adicionales relacionados con la deduplicación y la secuenciación.
Cuando EventBridge lee un lote, los mensajes se mantienen en la cola, pero se ocultan durante el tiempo de espera de visibilidad de la cola. Cuando su canalización procesa correctamente el lote, EventBridge elimina los mensajes de la cola. De forma predeterminada, si la función detecta un error al procesar un lote, todos los mensajes de ese lote se vuelven a ver en la cola. Por este motivo, el código de su canalización debe ser capaz de procesar el mismo mensaje varias veces sin efectos secundarios no deseados. Puede modificar este comportamiento de reprocesamiento si incluye errores de elementos por lotes en la respuesta de la canalización. En el ejemplo siguiente se muestra un evento para un lote de dos mensajes.
Eventos de ejemplo
En el siguiente evento de ejemplo se muestra la información que recibe la canalización. Puede usar este evento para crear y filtrar sus patrones de eventos o para definir la transformación de entrada. No todos los campos se pueden filtrar. Para obtener más información sobre los campos que puede filtrar, consulte Filtrado de eventos de las canalizaciones de Amazon EventBridge.
Cola estándar
[ { "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" }, { "messageId": "2e1424d4-f796-459a-8184-9c92662be6da", "receiptHandle": "AQEBzWwaftRI0KuVm4tP+/7q1rGgNqicHq...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082650636", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082650649" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:my-queue", "awsRegion": "us-east-2" } ]
Cola FIFO
[ { "messageId": "11d6ee51-4cc7-4302-9e22-7cd8afdaadf5", "receiptHandle": "AQEBBX8nesZEXmkhsmZeyIE8iQAMig7qw...", "body": "Test message.", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1573251510774", "SequenceNumber": "18849496460467696128", "MessageGroupId": "1", "SenderId": "AIDAIO23YVJENQZJOL4VO", "MessageDeduplicationId": "1", "ApproximateFirstReceiveTimestamp": "1573251510774" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-east-2:123456789012:fifo.fifo", "awsRegion": "us-east-2" } ]
Escalado y procesamiento
Para las colas estándar, EventBridge utiliza el sondeo largo para sondear una cola hasta que se active. Cuando se encuentran disponibles los mensajes, EventBridge lee hasta cinco lotes y los envía a su canalización. Si los mensajes siguen estando disponibles, EventBridge aumenta el número de procesos que son lotes de lectura hasta 300 instancias más por minuto. El número máximo de lotes que una canalización puede procesar simultáneamente es 1000.
Para colas FIFO, EventBridge envía mensajes a su canalización en el orden en que los recibe. Cuando envíe un mensaje a una cola FIFO, especifique un ID de grupo de mensajes. Amazon SQS facilita la entrega de los mensajes del mismo grupo a EventBridge, en orden. EventBridge ordena los mensajes recibidos en grupos y envía solo un lote a la vez para un grupo. Si la canalización devuelve un error, esta realiza todos los reintentos en los mensajes afectados antes de que EventBridge reciba mensajes adicionales del mismo grupo.
Configuración de una cola para utilizarla con canalizaciones de EventBridge
Cree una cola de SQS que sirva como origen para la canalización. A continuación, configure la cola para dar tiempo a su canalización a procesar cada lote de eventos y para que EventBridge vuelva a actuar en respuesta a los errores de limitación controlada a medida que escala verticalmente.
Para permitir que su canalización tenga tiempo para procesar cada lote de registros, establezca el tiempo de espera de visibilidad de la cola de origen hasta al menos seis veces el tiempo de ejecución combinado de los componentes de destino y enriquecimiento de la canalización. El tiempo adicional permitirá a EventBridge volver a intentar realizar los procesos en caso de que la canalización se vea limitada debido al procesamiento de un lote anterior.
Si su canalización no puede procesar un mensaje en repetidas ocasiones, Amazon SQS podrá enviar dicho mensaje a una cola de mensajes fallidos. Cuando su canalización devuelve un error, EventBridge lo mantiene en la cola. Después de que se supera el tiempo de espera de visibilidad, EventBridge el mensaje de nuevo. Para enviar mensajes a una segunda cola después de recibir varias veces, configure una cola de mensajes fallidos en la cola de origen.
nota
Asegúrese de configurar la cola de mensajes fallidos en la cola de origen y no en la canalización. La cola de mensajes fallidos que configure en una canalización se utiliza para la cola de invocación asíncrona de la canalización, no para las colas de origen de eventos.
Si la canalización devuelve un error o no puede invocarse porque está en la máxima simultaneidad, es posible que el procesado tenga éxito tras algunos intentos adicionales. Para dar a los mensajes más oportunidades de ser procesados antes de enviarlos a la cola de mensajes fallidos, establezca el maxReceiveCount de la política de redirección de la cola de origen a como mínimo 5.
Informes de fallos de elementos de lote
Cuando EventBridge consume y procesa datos de flujos de un origen, de forma predeterminada asigna puntos de control hasta el número de secuencia más alto de un lote solo cuando el lote ese procesa correctamente por completo. Para evitar el reprocesamiento de los mensajes procesados correctamente en un lote con errores, puede configurar el enriquecimiento o el destino para que devuelva un objeto que indique qué mensajes se han procesado correctamente y cuáles no. Esto se denomina respuesta parcial por lotes.
Para obtener más información, consulte Fallo de lote parcial.
Condiciones de éxito y fracaso
EventBridge trata un lote como un éxito completo si devuelve cualquiera de los siguientes elementos:
Una lista
batchItemFailurevacíaUna lista
batchItemFailurenulaUna
EventResponsevacíaUna
EventResponsenula
EventBridge trata un lote como un error completo si devuelve cualquiera de los siguientes elementos:
Una cadena
itemIdentifiervacíaUna nula
itemIdentifierUn
itemIdentifiercon un mal nombre de clave
EventBridge intenta volver a procesar los mensajes fallidos conforme a su estrategia de reintentos.