2012-04-17 14 views
5

Ho una piccola serie di messaggi in una coda di SQS, che non vengono eliminati, anche se una richiesta di cancellazione inviata all'endpoint AWS torna con una risposta 200. I messaggi vengono elaborati dalla mia domanda e la richiesta di cancellazione viene inviata anche bene.SQS messaggi non Eliminazione

Sto utilizzando Java AWS SDK 1.3.6.

Qualcun altro ha riscontrato questo problema?

+0

sono questi messaggi SQS non cancellati affatto o lo fa solo prendere un paio di secondi? Potresti mostrarci un codice? – Daan

+0

Ciao Daan. Non vengono mai cancellati, o almeno non lo sono stati nelle ultime ore. Potrei mostrarti del codice, ma è solo un uso regolare dell'SDK AWS, quindi non c'è molto da fare! –

+0

Hmm, non ho mai avuto questo problema. Puoi eliminarli manualmente dalla console di gestione web di AWS? Questo riguarda tutte le code SQS o solo questa? Se ne hai uno solo, potresti provare a creare una nuova coda e vedere se lo stesso codice funziona per l'eliminazione dei messaggi da quella coda? Non vedo alcun problema nella pagina dello stato del servizio AWS, quindi non penso che SQS stia agendo. Potrebbe essere, però. – Daan

risposta

9

Whoops - la coda era impostato accidentalmente defaultVisibilityTimeout=0. La modifica di questo valore positivo ha risolto il problema.

Ciò solleva ancora qualche domanda però:

  1. Perché questo effetto solo alcuni messaggi? Forse alcuni hanno impiegato più tempo per elaborare?
  2. Perché Amazon ha restituito un 200 per eliminare quando i messaggi non venivano eliminati?
  3. L'eliminazione non è riuscita perché non rientrava nella finestra da 0 secondi (nel qual caso perché ha risposto alle richieste di cancellazione?) Oppure ha avuto esito negativo perché un altro utente li aveva prelevati nel momento in cui la richiesta di eliminazione era ricevuto?
+0

Hmm. È misterioso. Neanche io conosco le risposte a queste domande, ma mi piacerebbe sapere se c'è qualcuno che lo fa. Grazie per aver condiviso la soluzione, a proposito! – Daan

+0

Sto sperimentando esattamente la stessa cosa in questo momento utilizzando l'SDK JavaScript. Anche il mio timeout era 0, ma aumentarlo non ha aiutato. Anche io ricevo messaggi di successo, ma solo quando elimini tramite la console AWS funziona. Qualche aggiornamento da parte di qualcuno? –

+0

@Daan puoi controllare la mia risposta e confermare che è il caso? Grazie ! –

1

documentazione ufficiale (versione 1.9.13)

IMPORTANTE: E 'possibile riceverete un messaggio anche dopo averlo eliminato. Ciò potrebbe accadere in rare occasioni se uno dei server che memorizza una copia del messaggio non è disponibile quando si richiede per eliminare il messaggio. La copia rimane sul server e potrebbe essere restituita di nuovo su una richiesta di ricezione successiva. Si consiglia di creare il proprio sistema in modo idempotente in modo che la ricezione di un particolare messaggio più di una volta non costituisca un problema.

+0

Una soluzione è estendere il timeout di visibilità (idealmente a livello di programmazione). –

Problemi correlati