Meu cenário é que estou planejando criar um tópico do ServiceBus com vários números (desconhecidos) de assinantes. Eles podem usar filtros de tópicos, portanto, não processam cada mensagem do tópico.
Preciso que uma determinada mensagem (ID) aguarde até que todos os manipuladores tenham feito seu trabalho para continuar o fluxo de trabalho. Naturalmente, cada manipulador produzirá uma mensagem após a conclusão e eu posso usar, por exemplo, a Função Durável para aguardar uma lista de eventos.
Mas a questão é: como posso saber se a lista de assinaturas que a mensagem foi / será enviada?
Com Microsoft.Azure.ServiceBus.Management.ManagementClient.GetSubscriptionsAsync()
posso obter a lista de todas as assinaturas do meu tópico. Mas não consigo descobrir como avaliar se a mensagem será aceita ou não de acordo com os filtros.
Se isso não for possível com o ServiceBus, existem alternativas (além de reinventar a roda com a implementação personalizada de Pub / Sub) para implementar esse tipo de cenário?
fonte
Respostas:
Eu começaria removendo a capacidade de filtrar.
Crie tópicos do servidor (não um tópico por assinante) que sejam uma aproximação dos filtros.
Todo assinante que assina um tópico deve processar todas as mensagens desse tópico. Mesmo que seja assim, diga que eles não fizeram nada com isso.
Então você sabe quem se inscreveu em cada tópico e quem processou cada mensagem em cada tópico.
fonte