【发布时间】:2016-12-19 18:42:33
【问题描述】:
我正在将使用 MSMQ 的应用程序转换为使用带有适配器的接口,而不是可以处理 MSMQ 或服务总线(本地或 Azure 版本)队列。应用程序对 MSMQ 的使用之一是配置检查器功能,用于确定系统具有执行某些操作的适当权限。它使用System.Messaging.MessageQueue.CanRead 来验证我们是否可以成功读取对应用程序很重要的给定队列(这是客户频繁的安全错误配置)。
Service Bus 中的最佳等价物对我来说并不明显。我对一种方法的第一个想法是尝试QueueClient.Peek() 并捕获任何随后发生的异常。 Peek 方法不提供超时参数,所以我只能希望这会很快发生。我更喜欢使用超时,以便在当前没有要读取的消息的可能情况下强制它快速返回。有Receive(TimeSpan serverWaitTime),我可以在很短的等待时间内通过,但我认为如果我碰巧收到一条消息,那将需要我使用事务并中止它。当我宁愿不这样做时,这会锁定队列。
我希望我错过了更好的选择。
【问题讨论】:
-
目前还没有这个功能。
-
创建receiver的时候需要指定namespace+sas key的连接字符串。如果你提供的 sas 键不允许对队列有读权限,你会得到一个异常
-
@Thomas,这很好用。如果您想将其作为答案包含在内,我会将其标记为已接受。抱歉这么晚才回复。
-
不用担心 :-) 我已经添加了答案
标签: c# azure msmq servicebus azure-servicebus-queues