什么是 Service Bus 等同于 MSMQ 的 CanRead?
What is Service Bus's equivalent to MSMQ's CanRead?
我正在将一个使用 MSMQ 的应用程序转换为使用带有适配器的接口,而不是可以处理 MSMQ 或服务总线(本地或 Azure 版本)队列。 MSMQ 的应用程序用途之一是配置检查器功能,以确定系统是否具有执行某些操作的适当权限。它使用 System.Messaging.MessageQueue.CanRead
来验证我们是否可以成功读取对应用程序很重要的给定队列(这是客户经常发生的安全配置错误)。
服务总线中最好的等效项对我来说并不明显。我对一种方法的第一个想法是尝试 QueueClient.Peek()
并捕获任何随后发生的异常。 Peek 方法不提供超时参数,所以我只能希望这会很快发生。我更愿意使用超时,这样我可以在当前没有消息可读的可能情况下强制它快速 return。 Receive(TimeSpan serverWaitTime)
我可以在其中等待很短的时间,但我认为这需要我使用事务并在我碰巧收到消息时中止它。当我不想这样做时,这会锁定队列。
我希望有一个我错过的更好的选择。
创建MessageReceiver
时需要指定命名空间的连接字符串+sas key。如果您提供的 sas 密钥不允许对队列进行读取权限,则会出现异常。
我正在将一个使用 MSMQ 的应用程序转换为使用带有适配器的接口,而不是可以处理 MSMQ 或服务总线(本地或 Azure 版本)队列。 MSMQ 的应用程序用途之一是配置检查器功能,以确定系统是否具有执行某些操作的适当权限。它使用 System.Messaging.MessageQueue.CanRead
来验证我们是否可以成功读取对应用程序很重要的给定队列(这是客户经常发生的安全配置错误)。
服务总线中最好的等效项对我来说并不明显。我对一种方法的第一个想法是尝试 QueueClient.Peek()
并捕获任何随后发生的异常。 Peek 方法不提供超时参数,所以我只能希望这会很快发生。我更愿意使用超时,这样我可以在当前没有消息可读的可能情况下强制它快速 return。 Receive(TimeSpan serverWaitTime)
我可以在其中等待很短的时间,但我认为这需要我使用事务并在我碰巧收到消息时中止它。当我不想这样做时,这会锁定队列。
我希望有一个我错过的更好的选择。
创建MessageReceiver
时需要指定命名空间的连接字符串+sas key。如果您提供的 sas 密钥不允许对队列进行读取权限,则会出现异常。