Amazon Simple Queue Service como fuente en Pipes EventBridge - Amazon EventBridge

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 fuente en Pipes EventBridge

Puedes usar EventBridge Pipes para recibir registros de una SQS cola de Amazon. 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 los mensajes de una cola de Amazon Simple Queue Service (AmazonSQS). EventBridge Las tuberías admiten colas estándar y colas con el primero en entrar y el primero en salir (). FIFO Con AmazonSQS, puedes descargar tareas de un componente de tu aplicación enviándolas a una cola y procesándolas de forma asíncrona.

EventBridge sondea la cola e invoca tu canalización de forma sincrónica con un evento que contiene mensajes de la cola. EventBridge lee los mensajes por lotes e invoca tu canal una vez para cada lote. Cuando tu canal procese correctamente un lote, EventBridge borra sus mensajes de la cola.

De forma predeterminada, EventBridge sondea simultáneamente hasta 10 mensajes de la cola 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 barra vertical, EventBridge continúa sondeando los mensajes de la cola SQS estándar de Amazon hasta que ocurra 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 utilizas una ventana de lotes y tu SQS cola de Amazon tiene poco tráfico, es EventBridge posible que esperes hasta 20 segundos antes de invocar tu canalización. Esto sucederá incluso si establece una ventana de lote inferior a 20 segundos. En el FIFO caso de las colas, los registros contienen atributos adicionales relacionados con la deduplicación y la secuenciación.

Cuando EventBridge lee un lote, los mensajes permanecen en la cola, pero permanecen ocultos durante el tiempo de espera de visibilidad de la cola. Si tu canal procesa el lote correctamente, EventBridge borra 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 en Amazon EventBridge Pipes.

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" } ]

FIFOcola

[ { "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

En el caso de las colas estándar, EventBridge utiliza sondeos largos para sondear una cola hasta que se active. Cuando hay mensajes disponibles, EventBridge lee hasta cinco lotes y los envía a la tubería. Si los mensajes siguen disponibles, EventBridge aumenta el número de procesos que leen los lotes en hasta 300 instancias más por minuto. El número máximo de lotes que una canalización puede procesar simultáneamente es 1000.

En el FIFO caso de las colas, EventBridge envía los mensajes a la canalización en el orden en que los recibe. Al enviar un mensaje a una FIFO cola, se especifica un ID de grupo de mensajes. Amazon SQS facilita la entrega de mensajes del mismo grupo a EventBridge, en orden. EventBridge clasifica los mensajes recibidos en grupos y envía solo un lote a la vez para cada grupo. Si la canalización devuelve un error, intentará realizar todos los reintentos con los mensajes afectados antes de EventBridge recibir más mensajes del mismo grupo.

Configurar una cola para usarla con Pipes EventBridge

Crea una SQS cola de Amazon que sirva de fuente para tu pipa. A continuación, configure la cola para dar tiempo a que la tubería procese cada lote de eventos y para que pueda volver EventBridge a intentarlo en respuesta a los errores de aceleración a medida que vaya aumentando la escala.

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 permite volver EventBridge a intentarlo si la tubería se ralentiza mientras se procesa un lote anterior.

Si tu canal no procesa un mensaje varias veces, Amazon SQS puede enviarlo a una cola de letra muerta. Cuando tu pipa devuelve un error, lo EventBridge mantiene en la cola. Cuando se agote el tiempo de espera de visibilidad, vuelve a EventBridge recibir el mensaje. 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 streaming desde una fuente, de forma predeterminada, selecciona el número de secuencia más alto de un lote, pero solo cuando el lote es un éxito total. 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

Si devuelve alguno de los siguientes datos, considerará EventBridge que el lote se ha realizado correctamente:

  • Una lista batchItemFailure vacía

  • Una lista batchItemFailure nula

  • Una EventResponse vacía

  • Una EventResponse nula

Si devuelve alguna de las siguientes opciones, EventBridge considerará el lote como un error total:

  • Una cadena itemIdentifier vacía

  • Una itemIdentifier nula

  • Un itemIdentifier con un mal nombre de clave

EventBridge Los reintentos fallan en función de su estrategia de reintentos.