【问题标题】:What is Service Bus's equivalent to MSMQ's CanRead?什么是服务总线相当于 MSMQ 的 CanRead?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2011-05-07
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多