2014-09-10 10 views
7

Recentemente ho creato alcune code partizionate da dove invio e ricevo tutto il tempo. Hanno funzionato come non partizionati in passato senza nessuno dei miei problemi attuali.Messaggi di coda del servizio di manutenzione di Azure bloccati

Il problema è che ho un numero costante di messaggi nella coda che non riesco a ricevere. Ricevo sempre nulla quando non invio altri messaggi alle code ma quando invio messaggi alle code ricevo i nuovi messaggi senza problemi. I messaggi che sono bloccati nella coda sono messaggi attivi, non lettera morta.

Sospetto che siano bloccati in una partizione specifica, ma non so come riceverli.

Poiché non riesco a ricevere questi messaggi c'è modo di ripristinare la coda di servizio?

Qualche idea?

Aggiornamento:

Il numero non è costante, ma molto lentamente aumentando. Nel nostro ambiente di test riceviamo poco più di 2000 messaggi all'ora e le code, dopo essere state reimpostate su 0 (zero), hanno ricevuto circa 20 messaggi ciascuna nelle ultime 12 ore. Quei messaggi sono lì ma non sono ricevibili. Almeno non nel solito modo.

Il problema riguarda solo due spazi dei nomi dopo che sono stati partizionati. Il problema non è nel nostro ambiente live in cui non usiamo code partizionate.

+3

Si dipendeva dal namespaceManager.GetQueue(). MessageCount? -> se questo è il modo - è possibile sfogliare il Q utilizzando lo strumento Service Bus Explorer o l'uso di Api, quando si osserva che il Q è in stato bloccato e Sfoglia/visualizza il messaggio Top e poi Invia un altro messaggio e vedere se il Top msg non sta cambiando. Sospetto che sia probabilmente solo un problema di conteggio. Se questo è il caso - Disabilita e abilitando la Q si porterà a reimpostare NSMgr.GetQueue(). MessageCount sul valore corretto. – Sreeram

+0

@ 1of5om3 I messaggi sono comparsi sia nel portale che durante la navigazione delle code tramite VS e a livello di programmazione. Avrebbe fatto il conto alla rovescia durante l'invio di messaggi e il conto alla rovescia durante la ricezione e l'eliminazione da esso. Alla fine abbiamo deciso di non usarlo per ora in quanto sembra che ci potrebbe essere un problema di contropartita, ma non possiamo esserne certi. E hai ragione anche riguardo alla disabilitazione/abilitazione. – user2413912

risposta

2

Ho visto una cosa simile nel nostro ambiente di produzione - forse è lo stesso comportamento che si sta vedendo. Utilizzando ServiceBusExplorer o qualcosa di simile, controllare se il messaggio 'ContentType' = application/vnd.ms-servicebus-ping.

Se è così ... questo è un messaggio di sistema (Azure) generato per determinare la disponibilità delle code ... per quanto ne so, questi messaggi dovrebbero scomparire dopo essere stati ricevuti ... ma anche i miei non lo sono. La documentazione da MS è scarsa su questo argomento ...

In ogni caso, se si assicura che questa sia la causa, è comunque possibile essere sicuri che non siano i VOSTRI messaggi bloccati in ServiceBus purgatory. Speriamo che MS risolva questo presto ...

+0

@RDPP - Blocca la durata della coda di 5 minuti – jglassco

+0

Questo sembra essere il più accurato e probabile _causa_ per la discrepanza. – Dusty

0

Controlla la durata del blocco della tua coda. Se i messaggi sono stati ricevuti ma non contrassegnati come Completi(), sembrano essere "bloccati" (non ricevibili) finché il blocco non rilasci nuovamente il messaggio.