什么是Service Bus相当于MSMQ的CanRead?

时间:2016-12-19 18:42:34

标签: c# azure msmq servicebus azure-servicebus-queues

我正在转换一个应用程序,该应用程序使用MSMQ来使用带有适配器的接口,而不是可以处理MSMQ或Service Bus(本地或Azure版本)队列。 MSMQ的应用程序之一是配置检查器功能,用于确定系统具有执行某些操作的适当权限。它使用System.Messaging.MessageQueue.CanRead来验证我们是否可以成功读取对应用程序很重要的给定队列(客户经常对安全性进行错误配置)。

服务总线中最好的等价物对我来说并不明显。我对方法的第一个想法是尝试QueueClient.Peek()并抓住任何随后的异常。 Peek方法不提供超时参数,所以我只希望这会很快发生。我宁愿使用超时,所以我可以强制它在可能的情况下快速返回,目前没有消息要读取。有Receive(TimeSpan serverWaitTime)我可以在很短的等待时间内通过,但我想这需要我使用一个事务并在我碰巧收到消息时中止它。当我宁愿不这样做时,这会锁定队列。

我希望我错过了一个更好的选择。

1 个答案:

答案 0 :(得分:0)

创建MessageReceiver时,需要指定命名空间+ sas密钥的连接字符串。如果您提供的sas密钥不允许对队列具有读取权限,则会出现异常。