c# - Azure服务总线: wait until all subscribers processed a message

标签 c# .net azure servicebus

我的场景是,我计划创建一个具有多个(未知)订阅者的 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/

相关文章:

asp.net - 无法从程序集中加载 BuildTasks.Csc 任务?

azure - 如何将我的 Azure 表存储数据移动到高级存储帐户?

.net - 我可以使用 MEF 从 GAC 中的程序集中发现零件吗?

.net - 如何使用 .NET 的 XML 库允许(或替换)&符号?

java - Java 通配符泛型 <?> 的 .NET 等效项具有协方差和逆方差?

c# - yield 返回的工作模式

azure - 使用图像源的好处 : `Azure Container Registry` over Image Source: `Private Registry` in Azure wizard `Create Web App` ?

c# - @bind 和 @bind-value 之间的区别

c# - 如何从 ASP.NET 调用具有多个输入值的 MySQL 存储过程

c# - 如何从 RDL 文件中获取要填充的数据集?