Mein Szenario ist, dass ich vorhabe, ein ServiceBus-Thema mit mehreren (unbekannten) Abonnenten zu erstellen. Sie können Themenfilter verwenden und verarbeiten daher nicht jede Nachricht aus dem Thema.
Ich muss für eine bestimmte Nachricht (ID) warten, bis alle Handler ihre Arbeit erledigt haben, um den Workflow fortzusetzen. Natürlich wird jeder Handler nach Abschluss eine Nachricht erzeugen und ich kann zum Beispiel Durable Function verwenden, um auf eine Liste von Ereignissen zu warten.
Aber die Frage ist, woher kann ich wissen, dass die Liste der Abonnementnachrichten an gesendet wurde / wird?
Mit Microsoft.Azure.ServiceBus.Management.ManagementClient.GetSubscriptionsAsync()
kann ich die Liste aller Abonnements für mein Thema erhalten. Aber ich kann nicht herausfinden, wie ich beurteilen kann, ob eine bestimmte Nachricht nach Filtern aufgenommen wird oder nicht.
Wenn dies mit ServiceBus nicht möglich ist, gibt es Alternativen (außer die Neuerfindung des Rads mit der benutzerdefinierten Implementierung von Pub / Sub), um diese Art von Szenario zu implementieren?
quelle
Antworten:
Ich würde damit beginnen, die Fähigkeit zum Filtern zu entfernen.
Erstellen Sie mehrere Themen (kein Thema pro Abonnent), die eine Annäherung an die Filter darstellen.
Jeder Abonnent, der ein Thema abonniert, muss alle Nachrichten für dieses Thema verarbeiten. Auch wenn es so heißt, dass sie nichts damit gemacht haben.
Dann wissen Sie, wer jedes Thema abonniert und wer jede Nachricht zu jedem Thema verarbeitet hat.
quelle