Amazon Simple Queue Service come sorgente in EventBridge Pipes - Amazon EventBridge

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Amazon Simple Queue Service come sorgente in EventBridge Pipes

Puoi usare EventBridge Pipes per ricevere record da una SQS coda Amazon. Se lo desideri, puoi filtrare o migliorare questi record prima di inviarli a una destinazione disponibile per l'elaborazione.

Puoi utilizzare una pipe per elaborare i messaggi in una coda Amazon Simple Queue Service (AmazonSQS). EventBridge Le pipe supportano le code standard e le code first-in, first-out (). FIFO Con AmazonSQS, puoi scaricare le attività da un componente della tua applicazione inviandole a una coda ed elaborandole in modo asincrono.

EventBridge interroga la coda e richiama la pipe in modo sincrono con un evento che contiene messaggi in coda. EventBridge legge i messaggi in batch e richiama la pipe una volta per ogni batch. Quando la pipe elabora correttamente un batch, EventBridge elimina i relativi messaggi dalla coda.

Per impostazione predefinita EventBridge , interroga fino a 10 messaggi nella coda contemporaneamente e invia il batch alla pipe. Per evitare di richiamare la pipe con pochi record, è possibile indicare all'origine dell'evento di memorizzare nel buffer i record per un massimo di cinque minuti configurando un periodo di batch. Prima di richiamare la pipe, EventBridge continua a esaminare i messaggi dalla coda SQS standard di Amazon finché non si verifica una delle seguenti situazioni:

  • Il periodo di batch scade.

  • Viene raggiunta la quota della dimensione del payload di invocazione.

  • Viene raggiunta la dimensione massima configurata del batch.

Nota

Se utilizzi una finestra batch e la tua SQS coda Amazon contiene poco traffico, EventBridge potresti attendere fino a 20 secondi prima di richiamare la tua pipe. Lo stesso vale anche se imposti un periodo di batch inferiore a 20 secondi. Per le FIFO code, i record contengono attributi aggiuntivi correlati alla deduplicazione e al sequenziamento.

Quando EventBridge legge un batch, i messaggi rimangono in coda ma sono nascosti per tutta la durata del timeout di visibilità della coda. Se la pipe elabora correttamente il batch, EventBridge elimina i messaggi dalla coda. Per impostazione predefinita, se la pipe rileva un errore durante l'elaborazione di un batch, tutti i messaggi in quel batch diventano nuovamente visibili nella coda. Per questo motivo, il codice della pipe deve riuscire a elaborare lo stesso messaggio più volte, senza effetti collaterali indesiderati. È possibile modificare questo comportamento di rielaborazione includendo, nella risposta della pipe, errori di elementi batch. Nell'esempio seguente viene illustrato un evento per un batch di due messaggi.

Eventi di esempio

L'evento di esempio seguente mostra le informazioni ricevute dalla pipe. È possibile utilizzare questo evento per creare e filtrare i modelli di eventi o per definire la trasformazione degli input. Non tutti i campi possono essere filtrati. Per ulteriori informazioni su quali campi è possibile filtrare, consulta Filtraggio degli eventi in Amazon EventBridge Pipes.

Coda standard

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

FIFOcoda

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

Dimensionamento ed elaborazione

Per le code standard, EventBridge utilizza il polling lungo per interrogare una coda finché non diventa attiva. Quando i messaggi sono disponibili, EventBridge legge fino a cinque batch e li invia alla tua pipe. Se i messaggi sono ancora disponibili, EventBridge aumenta il numero di processi che leggono i batch fino a 300 istanze in più al minuto. Il numero massimo di batch che è possibile elaborare contemporaneamente con una pipe è 1.000.

Per le FIFO code, EventBridge invia i messaggi alla tua pipe nell'ordine in cui li riceve. Quando si invia un messaggio a una FIFO coda, si specifica un ID del gruppo di messaggi. Amazon SQS semplifica l'invio di messaggi nello stesso gruppo a EventBridge, in ordine. EventBridge ordina i messaggi ricevuti in gruppi e invia solo un batch alla volta per gruppo. Se la pipe restituisce un errore, la pipe tenta tutti i tentativi sui messaggi interessati prima di EventBridge ricevere altri messaggi dallo stesso gruppo.

Configurazione di una coda da utilizzare con Pipes EventBridge

Crea una SQS coda Amazon che funga da fonte per la tua pipe. Quindi configura la coda in modo che la pipe abbia il tempo di elaborare ogni batch di eventi e di riprovare in risposta EventBridge agli errori di throttling man mano che aumenta.

Per concedere alla pipe il tempo necessario per elaborare ogni batch di record, imposta il timeout visibilità della coda di origine su un tempo pari ad almeno sei volte il runtime combinato dei componenti di arricchimento e di destinazione della pipe. Il tempo supplementare consente di riprovare se la pipa viene EventBridge strozzata durante l'elaborazione di un batch precedente.

Se la tua pipe non riesce a elaborare un messaggio più volte, Amazon SQS può inviarlo a una coda di lettere morte. Quando la tua pipe restituisce un errore, la EventBridge tiene in coda. Dopo il timeout di visibilità, EventBridge riceve nuovamente il messaggio. Per inviare messaggi a una seconda coda dopo un numero di ricevute, configurare una coda DLQ nella coda di origine.

Nota

Assicurati di configurare la coda DLQ sulla coda di origine, non sulla pipe. La coda DLQ che configuri su una pipe viene utilizzata per la coda di chiamate asincrone della pipe, non per le code di origine.

Se la pipe restituisce un errore o non può essere richiamata perché la simultaneità è al massimo, l'elaborazione potrebbe avere esito positivo con ulteriori tentativi. Per offrire ai messaggi maggiori possibilità di essere elaborati prima di inviarli alla coda DLQ, imposta maxReceiveCount sulla policy di reindirizzamento della coda di origine su almeno 5.

Segnalazione errori articoli batch

Quando EventBridge utilizza ed elabora i dati in streaming da una fonte, per impostazione predefinita il checkpoint si basa sul numero di sequenza più alto di un batch, ma solo quando il batch ha esito positivo. Per evitare di rielaborare i messaggi correttamente elaborati in un batch non riuscito, puoi configurare l'arricchimento o la destinazione in modo da restituire un oggetto che indichi quali messaggi hanno avuto esito positivo e quali non. Questa operazione è nota come risposta batch parziale.

Per ulteriori informazioni, consulta Errori batch parziali.

Condizioni di successo e di errore

Se restituisci una delle seguenti condizioni, EventBridge considera un batch come un successo completo:

  • Una batchItemFailure lista vuota

  • Un batchItemFailure elenco nullo

  • Un vuoto EventResponse

  • Un valore nullo EventResponse

Se restituisci una delle seguenti condizioni, EventBridge considera un batch come un completo fallimento:

  • Una stringa vuota itemIdentifier

  • Un valore nullo itemIdentifier

  • Un itemIdentifier con un nome chiave errato

EventBridge riprova gli errori in base alla strategia di ripetizione dei tentativi.