2013-02-26 8 views
5

Sto lavorando a un sistema che deve ridimensionare automaticamente i processi di lavoro che estraggono i messaggi da un argomento del bus di servizio per l'elaborazione.Come ottenere il conteggio dei messaggi non elaborati da un abbonamento a Service Bus di Windows?

Per fare ciò Ho bisogno di conoscere il numero di messaggi non elaborati per un dato abbonamento. Come lo faccio?

Ho dato un'occhiata alla classe SubscriptionClient, ma non sembra essere un modo per trovare il numero di messaggi in attesa di essere elaborati.

enter image description here

+0

Attualmente trovato la risposta qui: http://stackoverflow.com/questions/13957339/get-message-count-for-azure-topic-subscription A quanto pare è necessario ottenere la "SubscriptionDescription" da un "NamespaceManager", quindi puoi ottenere il conteggio dei messaggi. Tuttavia, non è possibile ottenerlo direttamente da SubscriptionClient. –

+0

Ah ok, non ho visto il tuo commento, il mio male :) –

+1

FYI, il 'MESSAGE COUNT' include messaggi di lettere morte e trasferiti. – Mikee

risposta

2

È possibile utilizzare il NamespaceManager per ottenere il vostro QueueDescription o TopicDescription utilizzando GetMessage(_name_) o GetTopic(_name_). Queste descrizioni espongono il valore come MessageCount.

Spero che questo aiuti!

+2

FYI, MessageCount include tutti i messaggi (Dead Letter e Trasferiti) in Argomento \ Susbcrition. Utilizzare la proprietà MessageCountDetails per suddividere i conteggi singolarmente. NOTA inoltre sembra che ci sia un bug con questi conteggi in quanto riportano 0 a meno che non si sia verificata qualche attività recente sulla 'coda'. – Mikee

+1

Questa risposta è un po 'fuorviante. 'TopicDescription.MessageCountDetails' riporterà in modo errato come notato da @Mikee - si è bloccato su questo. La soluzione era usare 'SubscriptionDescription' come risultato del metodo' GetSubscription (topicName, subscriptionName) '. – Reniuz