Mi escenario es que estoy planeando crear un tema de ServiceBus con un número múltiple (desconocido) de suscriptores. Pueden usar filtros de tema, por lo que no procesarán cada mensaje del tema.
Necesito que un mensaje (Id) determinado espere hasta que todos los controladores hayan hecho su trabajo para continuar el flujo de trabajo. Naturalmente, cada controlador producirá un mensaje al finalizar y puedo usar, por ejemplo, la función Durable para esperar una lista de eventos.
Pero la pregunta es ¿cómo puedo saber si la lista de suscripciones ha sido / será enviada?
Con Microsoft.Azure.ServiceBus.Management.ManagementClient.GetSubscriptionsAsync()
puedo obtener la lista de todas las suscripciones para mi tema. Pero no puedo encontrar cómo evaluar si tomará un mensaje dado o no de acuerdo con los filtros.
Si eso no es posible con ServiceBus, ¿hay alguna alternativa (además de reinventar la rueda con la implementación personalizada de Pub / Sub) para implementar este tipo de escenario?
fuente
Respuestas:
Comenzaría eliminando la capacidad de filtrar.
Cree varios temas (no un tema por suscriptor) que sean una aproximación de los filtros.
Cada suscriptor que se suscribe a un tema debe procesar todos los mensajes para ese tema. Incluso si es así, decir que no hicieron nada con él.
Entonces sabrá quién se ha suscrito a cada tema y quién ha procesado cada mensaje sobre cada tema.
fuente