我正在使用Azure Service Bus Queue从我的应用发送电子邮件。我有许多不同的客户通过我的应用程序发送电子邮件,每条消息都有一个标识该客户的属性:CustomerID
我需要为客户编写一个管理区域来查看队列中的待处理消息,更重要的是查看deadletter队列。我不希望他们看到每个人的紧张,所以我想根据属性CompanyID过滤消息。
我如何做到这一点?
我阅读了有关主题和订阅的内容,但我至少每周增加10位以上的客户,这对我来说不是一个合理的解决方案。
答案 0 :(得分:7)
队列不支持过滤。您可以编写在客户端获取所有消息和过滤器的管理客户端,但考虑主题/订阅,因为您可以轻松地每个主题添加最多2000个订阅,然后通过客户等过滤这些消息。对于您要反复查询的内容如上所述的方法,您有一个守护程序解析队列并更新表,然后每个客户在该状态表上运行查询将更好地工作。
答案 1 :(得分:2)
队列通常不适合查询和高级过滤方案。当客户检查状态时,窥视大队列会破坏使用服务总线的整个目的。
我的建议是将已启动任务的状态存储在Azure表存储中。一旦辅助角色处理或处理队列中的消息失败,它就可以简单地更新表存储中的状态。