2013-02-26 8 views
5

Pracuję nad systemem, który musi automatycznie skalować procesy robocze, które pobierają wiadomości z szyny serwisowej do przetwarzania.Jak uzyskać nieprzetworzoną liczbę wiadomości z subskrypcji magistrali usług Windows?

Aby to zrobić, Potrzebuję znać liczbę nieprzetworzonych wiadomości dla danej subskrypcji. Jak mogę to zrobić?

Spojrzałem na klasę SubscriptionClient, ale wydaje się, że nie ma sposobu na znalezienie liczby wiadomości oczekujących na przetworzenie.

enter image description here

+0

Właściwie znalazłem odpowiedź tutaj: http://stackoverflow.com/questions/13957339/get-message-count-for-azure-topic-subscription Podobno musisz pobrać "SubscriptionDescription" z "NamespaceManager", a następnie możesz uzyskać liczbę wiadomości. Nie można jednak uzyskać tego bezpośrednio z SubscriptionClient. –

+0

Ah w porządku, nie widziałem twojego komentarza, moje złe :) –

+1

FYI, "LISTA WIADOMOŚCI" zawiera wiadomości martwe i przesyłane. – Mikee

Odpowiedz

2

Można użyć NamespaceManager aby uzyskać QueueDescription lub TopicDescription za pomocą GetMessage(_name_) lub GetTopic(_name_). Te opisy przedstawiają wartość jako MessageCount.

Mam nadzieję, że to pomoże!

+2

FYI, MessageCount zawiera wszystkie wiadomości (Dead Letter i Transferred) w temacie \ Susbcrition. Użyj właściwości MessageCountDetails, aby podzielić liczby indywidualnie. UWAGA także wydaje się, że występuje błąd związany z tymi liczbami, ponieważ raportują 0, chyba że zaszło jakieś ostatnie działanie w "kolejce". – Mikee

+1

Ta odpowiedź jest nieco myląca. 'TopicDescription.MessageCountDetails' będzie nieprawidłowo raportowany jako @Mikee - utknął na tym. Rozwiązaniem było użycie 'SubscriptionDescription' w wyniku metody' GetSubscription (topicName, subscriptionName) '. – Reniuz

Powiązane problemy