Utilizzo dell'ID di deduplicazione dei messaggi Amazon SQS - Amazon Simple Queue Service

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à.

Utilizzo dell'ID di deduplicazione dei messaggi Amazon SQS

L'ID di deduplicazione messaggi è il token utilizzato per la deduplicazione dei messaggi inviati. Se un messaggio con un particolare ID di deduplicazione del messaggio viene inviato con successo, tutti i messaggi inviati con lo stesso ID di deduplicazione del messaggio vengono accettati correttamente, ma non vengono recapitati entro l'intervallo di deduplicazione di 5 minuti.

Nota

Amazon SQS continua a tenere traccia dell'ID di deduplicazione dei messaggi anche dopo che il messaggio viene ricevuto ed eliminato.

Fornitura dell'ID di deduplicazione messaggi

Il produttore deve fornire i valori di ID di deduplicazione messaggi per ogni messaggio inviato nelle seguenti situazioni:

  • I messaggi inviati con corpo del messaggio identico che Amazon SQS deve trattare come univoci.

  • I messaggi inviati con contenuti identici ma attributi diversi, che Amazon SQS deve trattare come univoci.

  • I messaggi inviati con contenuti diversi (ad esempio, nuovi tentativi inclusi nel corpo del messaggio) che Amazon SQS deve trattare come duplicati.

Abilitazione della deduplicazione per un sistema a consumatore/produttore singolo

Se si dispone di un solo produttore e un singolo consumatore e i messaggi sono specifici perché un ID messaggio specifico dell'applicazione è incluso nel corpo del messaggio, segui queste best practice:

  • Abilita la funzionalità di deduplicazione basata sui contenuti per la coda (ciascun messaggio ha un corpo specifico). Il produttore può omettere l'ID di deduplicazione messaggio.

  • Quando la deduplicazione basata sul contenuto è abilitata per una coda FIFO di Amazon SQS e viene inviato un messaggio con un ID di deduplicazione, l'ID di deduplicazione sostituisce l'ID di deduplicazione basato sul SendMessage contenuto generato.

  • Anche se il consumatore non è tenuto a fornire un ID del tentativo di richiesta di ricezione per ogni richiesta, è una best practice perché consente un'esecuzione più veloce delle sequenze ritentate dopo esito negativo.

  • Puoi riprovare a inviare o ricevere richieste perché non interferiscono con l'ordinazione di messaggi nelle code FIFO.

Progettazione di scenari di recupero interruzioni

Il processo di deduplicazione nelle code FIFO è legata al fattore tempo. Quando si progetta l'applicazione, verificare che sia il produttore sia il consumatore siano in grado di effettuare il recupero in caso di interruzione del client o della rete.

  • Il produttore deve essere a conoscenza dell'intervallo di deduplicazione della coda. Amazon SQS dispone di un intervallo di deduplicazione minimo di 5 minuti. La riesecuzione di richieste SendMessage dopo la scadenza dell'intervallo di deduplicazione può introdurre messaggi duplicati in coda. Ad esempio, un dispositivo mobile in un auto invia messaggi il cui ordine è importante. Se l'automobile perde connettività cellulare per un periodo di tempo prima di ricevere una conferma, ritentare la richiesta dopo il ritorno della connettività del cellulare può portare alla creazione di un duplicato.

  • Il consumatore deve avere un timeout visibilità, che riduce al minimo il rischio di impossibilità di elaborare i messaggi di timeout visibilità prima della scadenza. È possibile estendere la visibilità timeout mentre i messaggi vengono elaborati richiamando l'azione ChangeMessageVisibility. Tuttavia, se il timeout visibilità scade, un altro consumatore può immediatamente iniziare a elaborare i messaggi, causando l'elaborazione di un messaggio più volte. Per evitare questo scenario, configura una coda DLQ.

Utilizzo dei timeout di visibilità

Per prestazioni ottimali, imposta il timeout di visibilità in modo che sia maggiore del timeout di lettura dell' AWS SDK. Questo si applica all'utilizzo dell'operazione API ReceiveMessage con short polling o long polling.