Azure服务总线队列分组消息

问题描述 投票:0回答:2

我有一个Web api应用程序,该应用程序执行不同类型的操作,一个域实体称为Application。 “复制”,“更新”,“回收”,“还原”等操作。

此操作需要针对每个应用程序,以先进先出的顺序执行,不能随机或同时执行。但是,只要它们用于两个单独的应用程序,它就可以同时处理两个动作。

是某种队列,但不是所有请求的大队列,而是数据库中每个应用程序的操作队列。

知道这一点,我认为azure service bus queue对于这种情况是一个很好的解决方案。

但是,我现在想到的解决方案是,以编程方式为我在数据库中拥有的每个应用程序创建一个队列,并开始侦听该队列。

是否可以基于过滤器从队列中获取消息? (使用FIFO原理)所以我只需要订阅一个队列? (而不是为每个应用程序排队-这很难维护)

azure message-queue azureservicebus azure-servicebus-queues
2个回答
1
投票

您想要的是Azure Service Bus Topics/Subscriptions

订阅使您可以使用消息头上的SqlFilter筛选发布到主题的消息。

上面链接的文章应提供足够的示例来满足您的需求。


0
投票

我认为您可以使用Sessions解决此问题。

我刚刚看过这篇非常清晰的文章:https://dev.to/azure/ordered-queue-processing-in-azure-functions-4h6c,其中详细解释了Azure Service Bus Queue会话如何工作。

简而言之:通过在消息上定义SessionId,您可以强制会话中的处理顺序,缺点是队列中多个使用者之间的会话中的所有消息都不会并行化。

© www.soinside.com 2019 - 2024. All rights reserved.