首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查AzureServiceBus可用性

如何检查AzureServiceBus可用性
EN

Stack Overflow用户
提问于 2018-02-15 21:49:49
回答 2查看 1.2K关注 0票数 1

目前,我使用以下代码检查Azure ServiceBus的可用性:

代码语言:javascript
复制
using Microsoft.ServiceBus.Messaging;
public static bool IsOnline(string queueName = null)
{
    try
    {
        QueueClient queueClient = QueueClient.CreateFromConnectionString(ConnectionString);
        queueClient.Peek(); //works, but will explode on Receive()
        return true;
    }
    catch
    {
        return false;
    }
}

但是,当ASB队列被禁用时,Peek()仍然工作,但是Receive()会抛出一个错误。

Microsoft.ServiceBus.Messaging.MessagingEntityDisabledException: Messaging entity 'servicebus01:Queue:myqueue' is currently disabled. fc088ddd-0592-460e-a8b1-9587f708a6a1_G30 ---> System.ServiceModel.FaultException1[System.ServiceModel.ExceptionDetail]:...

是否有可靠的方法来检查ServiceBus是否可用?(联机,未禁用,并已准备好排队/排队)

EN

回答 2

Stack Overflow用户

发布于 2018-02-16 00:38:01

不应执行监视实体(队列)。如果一个实体被禁用,它必须有一个很好的理由。如果一个实体被禁用,就会故意这样做,因为它知道后果。只有在这种情况下,我才会同意一个协议,如何沟通它,而不是敲打一个女强人。

服务可用性是另一回事。如果您想确保服务已经启动,是一次检查还是每次操作?如果对每个操作,您最好依赖内置重试策略,如果需要,添加您自己的后退策略。如果需要在服务关闭时采取行动,则可能需要查看Azure监视器服务

票数 0
EN

Stack Overflow用户

发布于 2018-02-16 01:09:56

到目前为止,我有以下解决方案来检测可用性:

  1. 创建专用测试队列
  2. 从该队列接收消息

尽管它可以工作,但它感觉像是可靠地检测AzureServiceBus可用性的一种困难的方法。期待着您给我一个更优雅的解决方案。

代码语言:javascript
复制
    public static bool IsOnline(string queueName = null)
    {
        try
        {
            QueueClient queueClient = QueueClient.CreateFromConnectionString(ConnectionString, "testqueue", ReceiveMode.ReceiveAndDelete);
            queueClient.Receive(TimeSpan.Zero);
            queueClient.Close();
            return true;
        }
        catch
        {
            return false;
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48816878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档