如何根据消息属性过滤Azure Service Bus Queue消息?

Sle*_*lee 5 c# servicebus azure

我正在使用Azure Service Bus Queue从我的应用程序发送电子邮件.我有许多不同的客户通过我的应用程序发送电子邮件,每条消息都有一个标识该客户的属性:CustomerID

我需要为我的客户编写一个管理区域来查看队列中的待处理消息,更重要的是查看deadletter队列.我不希望他们看到每个人的紧张,所以我想根据属性CompanyID过滤消息.

我该如何做到这一点?

我阅读了有关主题和订阅的内容,但我至少每周增加10位以上的客户,这对我来说不是一个合理的解决方案.

Abh*_*Lal 7

队列不支持过滤.您可以编写在客户端获取所有消息和过滤器的管理客户端,但考虑主题/订阅,因为您可以轻松地每个主题添加最多2000个订阅,然后通过客户等过滤这些消息.对于您要反复查询的内容如上所述的方法,您有一个守护程序解析队列并更新表,然后每个客户在该状态表上运行查询将更好地工作.


Sof*_*tor 2

队列通常不太适合查询和高级过滤场景。当客户检查状态时浏览大量队列将违背使用服务总线的全部目的。

我的建议是将已启动任务的状态存储在Azure表存储中。一旦辅助角色处理或处理队列中的消息失败,它可以简单地更新表存储中的状态。