2016-07-28 16 views
1

HintergrundAzure Service Bus-Abonnement wird immer keine Nachricht von dem Thema

Ich habe ein Thema (T1) in Azure Service Bus, die Millionen von Nachrichten von dem Client (Web-App) zu bekommen. Es gibt 3 Subskriptionen (S1, S2, S3) ohne Filter, die durch 3 verschiedene Hintergrundprozesse (Worker-Rollen) erstellt werden.

Problem

Wenn die Arbeiter Rollen laufen, nur das erste Abonnement (S1) scheint überhaupt keine Nachrichten bekommen zu werden und dann ruhen (S2 und S3) entweder nicht erhalten etwas oder einen Bruchteil davon bekommen. Alle Abonnenten werden auf die gleiche Weise mit denselben genauen Einstellungen und ohne Filter erstellt.

Service Bus Explorer zeigt die korrekte Nachrichtenzahl für S1 (~ 100 KB) aber für S2 und S3 die aktive Nachrichtenanzahl ist sehr sehr niedrig (weniger als 10 und in der Regel 0). Es scheint mir, dass die Nachrichten irgendwie gelöscht werden, ohne dass sie sogar von den Clients empfangen werden.

Was ist der beste Weg zu untersuchen, was falsch ist und warum die Anzahl der Nachrichten zwischen den Abonnenten nicht übereinstimmt. Irgendwelche Vorschläge, was könnte falsch sein?

+0

technisch ohne Filter sollten alle Subs alle Nachrichten bekommen. aber das übertrifft den ganzen Punkt der Themen. Nach dem Lesen der Nachrichten aus dem Abonnement löschen Sie sie. ? – Aravind

Antwort

1

prüfen Abonnements in Frage:

können Sie dieses Tutorial helfen. Abonnements unterstützen ihre eigenen DefaultMessageTimeToLive. Standardmäßig ist es jedoch auf Maximum eingestellt. Sehen Sie sich den Code an, den Sie zum Erstellen der Subskriptionen verwendet haben. Vielleicht verwenden Sie QueueDescription, um DefaultMessageTimeToLive und andere Werte anzupassen.

Aktivieren Sie außerdem EnableDeadLetteringOnMessageExpiration, um zu sehen, ob Nachrichten ablaufen oder nicht.

Überprüfen Sie MaxDeliveryCount. Wenn die Anzahl zu niedrig ist und die Nachrichten nicht erfolgreich verarbeitet werden, überschreitet die Anzahl der übermittelten Nachrichten die maximale Anzahl und die Nachricht wird gelöscht oder gelöscht.

Zusätzlich zu, dass, wenn Filterung ist nach oben ist, können Sie, dass durch Aktivierung EnableDeadLetteringOnFilterEvaluationExceptions

herauszufinden Wenn alles nichts hilft, schreiben Sie einen Link auf die Wiedergabe Code in GutHub oder BitBucket so dass die Menschen sehen, was getan hat.