Azure Service Bus Queue分组消息

时间:2015-06-12 14:47:53

标签: azure message-queue azureservicebus azure-servicebus-queues

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

你想要的是Azure Service Bus Topics/Subscriptions

订阅允许您使用邮件标题上的SqlFilter过滤发布到主题的邮件。

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

答案 1 :(得分:0)

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

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

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

相关问题