我只希望众多消息使用者中有一个根据 Id 处理消息,这可以通过 Azure 服务总线实现吗?

I want only one message consumer out of many to process a message based on an Id, can this be achieved with Azure Service Bus?

我正在尝试创建一个调度程序来启动具有不同参数的各种任务。然后,这些任务将由较小的应用程序进行处理。这些应用程序只处理它们应该处理的任务,每个应用程序都具有独特的功能。

最初我开始使用 Azure 服务总线,以便调度程序可以在服务总线上抛出一条消息,供特定使用者根据指定任务进行处理。例如,调度程序将启动一个名为的任务并在服务总线上抛出一条消息,而应该处理该任务的消费者将拾起它进行处理,而其他处理器则什么都不做。

然而,我后来发现的问题是,调度程序需要知道所有特定的主题或队列才能知道将消息发送到哪里。理想情况是调度程序只知道一个主题,所有消费者(处理器)都听那个主题,他们应该只接受专门为他们准备的消息。我想要这种情况,因为调度程序在创建后应该保持不变,并且只会接收新任务以通过前端应用程序执行,前端应用程序将新的计划任务提交给调度程序。简而言之,我希望调度程序尽可能通用。但是,随着时间的推移,将添加更多的消费者来处理各种任务。

这可以通过 Azure 服务总线实现吗?如果是这样,如何?还是其他 Azure 功能对此更有用?无论哪种方式,我都需要这样做 Azure。

我一直在想我可以让所有的处理器接受消息并检查 messageId,如果它是正确的,然后处理消息,但是让所有的消费者都接受消息听起来效率不高留言。

我相信 Azure 服务总线 Topics & Subscriptions 可以很好地满足您的要求。

基本上,您会为每种任务创建一个单独的订阅。然后您需要定义 filtering rules 以便发送到主题的消息可以路由到适当的订阅,并且侦听该订阅的任务处理器将选择消息并处理它。