我的场景是,我计划创建一个具有多个(未知)订阅者的 ServiceBus 主题。他们可以使用主题过滤器,因此不会处理该主题中的每条消息。
我需要给定消息(Id)等待所有处理程序完成其工作才能继续工作流程。当然,每个处理程序都会在完成后生成一条消息,我可以使用例如 Durable Function 来等待事件列表。
但问题是我如何知道订阅消息已经/将要发送到的列表?
使用Microsoft.Azure.ServiceBus.Management.ManagementClient.GetSubscriptionsAsync()
,我可以获得我的主题的所有订阅的列表。但我找不到如何根据过滤器评估它是否会接受给定的消息。
如果使用 ServiceBus 无法实现这一点,是否有任何替代方案(除了使用 Pub/Sub 的自定义实现重新发明轮子之外)来实现这种场景?
最佳答案
我首先会删除过滤功能。
创建与过滤器近似的多个主题(不是每个订阅者的主题)。
订阅某个主题的每个订阅者都必须处理该主题的所有消息。即使他们没有采取任何行动。
然后您就知道谁订阅了每个主题以及谁处理了每个主题的每条消息。
关于c# - Azure服务总线: wait until all subscribers processed a message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457299/