【发布时间】:2019-12-24 16:12:44
【问题描述】:
我有一个 web api 应用程序,它执行不同类型的操作一个域实体,称为Application。 “复制”、“更新”、“回收”、“恢复”等操作。
此操作需要按应用程序按先进先出顺序执行,而不是随机或同时执行。但是,它可以同时处理两个 Action,只要它们用于两个单独的应用程序即可。
是某种队列,但不是所有请求的大队列,而是数据库中每个应用程序的操作队列。
知道了这一点,我认为azure service bus queue 是这个场景的一个很好的解决方案。
但是,我现在能想到的解决方案是以编程方式为数据库中的每个应用程序创建一个队列,然后开始监听该队列。
是否可以根据过滤器从队列中获取消息? (使用先进先出原则)所以我必须只订阅一个队列? (而不是为每个应用程序设置一个队列——这很难维护)
【问题讨论】:
-
我回答你的问题了吗?
-
@kspearrin 感谢您的回答。我将不得不做一些测试,看看它是否有效。据我所知,订阅允许我过滤队列,但没有任何过滤条件。我只需要一个订阅,它会根据它们的 Application Id 属性分块接收队列
-
除非我误解了你,否则你应该创建多个订阅(针对每个应用程序)到基于此应用程序 ID 标头过滤的主题。然后只需在发布到主题的每条消息中包含应用程序 ID。
-
这是我试图避免的。每个应用程序都有订阅更难管理,例如,如果删除应用程序,则需要删除订阅。或者当 Web 服务器启动时,我需要获取所有应用程序 ID 并为每个应用程序创建订阅
标签: azure message-queue azureservicebus azure-servicebus-queues