Mi piacerebbe assicurarmi di non inserire più volte un messaggio in coda. C'è un ID/nome che posso usare per rafforzare l'unicità?Messaggio univoco della coda di Azure
risposta
Le code di Azure non garantiscono l'ordine dei messaggi e l'univocità dei messaggi. I messaggi verranno elaborati "almeno una volta", ma nulla garantisce che non verrà elaborato due volte, quindi non garantisce "al massimo una volta".
Dovresti essere pronto a ricevere lo stesso messaggio due volte. Puoi inserire un ID nel corpo del messaggio come parte dei tuoi dati.
vtortola praticamente lo copriva, ma volevo aggiungere un po 'più di dettaglio al motivo per cui è almeno una volta consegna.
Quando si legge un articolo in coda, non viene rimosso dalla coda; invece, diventa invisibile ma rimane in coda. Il periodo di invisibilità è impostato su 30 secondi (max: 2 ore). Durante questo periodo, il codice che ha eliminato l'elemento dalla coda ha tutto il tempo necessario per elaborare qualsiasi comando presente nel messaggio di coda ed eliminare l'elemento della coda.
Supponendo che l'elemento della coda venga eliminato prima del raggiungimento del periodo di timeout, tutto va bene. Tuttavia: una volta raggiunto il periodo di timeout, l'elemento della coda diventa nuovamente visibile e il codice che contiene l'elemento della coda potrebbe non eliminarlo più. In questo caso, qualcun altro può leggere lo stesso messaggio in coda e rielaborare quel messaggio.
A causa del fatto un messaggio coda può timeout, e può ri-compaiono:
- trattamento dei suoi coda deve essere idempotent - operazioni su un messaggio di coda deve comportare lo stesso risultato (come ad esempio il rendering una miniatura per una foto).
- È necessario pensare alle modifiche del timeout. Potresti scoprire che i comandi sono validi ma l'elaborazione impiega troppo tempo (forse il codice di rendering delle miniature di 45 secondi ha funzionato bene fino a quando qualcuno ha caricato un'immagine da 25MP)
- È necessario pensare ai messaggi velenosi, quelli che non verranno mai elaborati correttamente. Forse provocano l'emissione di un'eccezione o una condizione non valida che provoca l'interruzione dell'elaborazione da parte del processore di messaggi, che a sua volta riappare nel messaggio. C'è una proprietà denominata DequeueCount - considera di visualizzare tale proprietà alla lettura di un elemento della coda e, se uguale a, ad esempio 3, invia il messaggio in una tabella o in un blob e invia una notifica per dedicare del tempo al debug di quel messaggio offline.
Ulteriori dettagli sull'API REST di basso livello get-queue sono here. Questo ti darà più informazioni sulla gestione dei messaggi della coda di Windows Azure.
- 1. Messaggio di coda di archiviazione di Azure (visualizzato all'ora specifica)
- 2. Coda di archiviazione di Azure - correlazione della risposta alla richiesta
- 3. Coda bus servizio di Azure ScheduledEnqueueTimeUtc ritardato
- 4. come si filtrano i messaggi della coda di bus di servizio di Azure in base alla proprietà di un messaggio?
- 5. Configurare QueueTrigger per coda utilizzando la memoria della coda di Azure
- 6. Coda WebJob di Azure Come rimuovere DeleteMessage dopo averlo ottenuto?
- 7. Il messaggio QueueTrigger di Azure WebJob non viene eliminato dalla coda
- 8. Coda del bus di servizio di Azure Blocco PeekBatch?
- 9. Rilevamento duplicato nella coda di archiviazione di Azure
- 10. WebJobs non riprovare messaggio in coda non riuscito
- 11. Messaggi di coda del servizio di manutenzione di Azure bloccati
- 12. Elaborazione ritardata coda/messaggio in Storm
- 13. SQL Server Trigger - Invia messaggio alla coda
- 14. La coda JMS riceve un messaggio?
- 15. Algoritmo di riduzione della coda?
- 16. Webjob di Azure; Esecuzione programmata e trigger per coda
- 17. Cambio filtro sottocrizione coda servizio bus di Azure
- 18. Gestione della coda TPL
- 19. Svantaggio della coda circolare?
- 20. C'è un modo per eliminare un messaggio in sospeso da una coda del bus di servizio in Azure?
- 21. Utilizzo di BrokeredMessage con Trigger coda di servizio in Azure Funzione
- 22. Problema di sottoclasse della coda di multiprocessing
- 23. RabbitMQ ascolta solo il primo messaggio in coda
- 24. Implementazioni della coda Java, quale?
- 25. Imposta nextVisibleTime nell'SDK Webjobs di Azure
- 26. Ricorsione della coda in clojure
- 27. Coppia all'interno della coda di priorità
- 28. Definizione di "ID di distribuzione" e "Nome univoco di distribuzione"
- 29. Coda piena, profondità della Coda bloccante, chiarimento necessario
- 30. Spostare il messaggio dalla coda Dead Letter alla coda in uscita MSMQ