【问题标题】:Azure Event Hub timeoutsAzure 事件中心超时
【发布时间】:2018-01-09 17:18:32
【问题描述】:

尝试向 Azure 事件中心发送消息时,我偶尔会在事件中心客户端中看到超时错误。看起来客户端已达到资源限制,但我不确定... 代码如下:

   MessagingFactory messagingFactory = null;
            EventHubClient hubClient = null;

            try
            {
                messagingFactory = MessagingFactory.CreateFromConnectionString(this.connectionString);

                hubClient = messagingFactory.CreateEventHubClient(this.configurationManager.EventHubName);

                var batchIterator = new EventBatchIterator<T>(events);
                foreach (var batch in batchIterator)
                {
                    await hubClient.SendBatchAsync(batch);
                }
            }
            catch (Exception e)
            {
                this.logger.Error("An error occurred during sent messages to event hub", e);
            }
            finally
            {
                if (hubClient != null)
                {
                    await hubClient.CloseAsync();
                }

                if (messagingFactory != null)
                {
                    await messagingFactory.CloseAsync();
                }
            }

例外是:

与“N/A”通信时出错。检查 连接信息,然后重试。 Microsoft.ServiceBus.Messaging.MessagingCommunicationException

连接尝试失败,因为连接方没有 一段时间后正确响应,或建立连接 失败,因为连接的主机没有响应 System.Net.Sockets.SocketException

【问题讨论】:

    标签: c# azure azure-eventhub


    【解决方案1】:

    根据您提到的 execption 表示用户启动的操作花费的时间超过了操作超时。我的解决方法是您可以增加 OperationTimeout 或重试次数。

    增加超时的演示代码

    var builder = new ServiceBusConnectionStringBuilder("connection string")
                    {
                        TransportType = TransportType.Amqp,
                        OperationTimeout = TimeSpan.FromSeconds(90)
                    };
    
    messagingFactory = MessagingFactory.CreateFromConnectionString(builder.ToString());
    

    有关超时异常的更多信息,请参阅document

    常见原因

    此错误有两个常见原因:不正确的配置或暂时的服务错误。

    • 配置不正确 操作超时对于操作条件而言可能太小。客户端 SDK 中的操作超时默认值为 60 秒。检查您的代码是否将值设置为太小。请注意,网络状况和 CPU 使用情况会影响特定操作完成所需的时间,因此操作超时不应设置为非常小的值。

    • 暂时性服务错误 有时事件中心服务会在处理请求时遇到延迟;例如,在高流量期间。在这种情况下,您可以在延迟后重试操作,直到操作成功。如果多次尝试相同的操作仍然失败,请访问 Azure 服务状态站点,查看是否有任何已知的服务中断。

    【讨论】:

    • 感谢您的评论。但是在超时异常之前出现异常“在与“N/A”通信期间发生错误。看起来它无法获得事件中心的正确地址,这就是超时的原因。另一方面,我们在异常期间没有看到事件中心有任何问题或高负载...
    • 正如您提到的occasionally see timeout errors,我认为异常与事件中心的地址无关。我再次提醒您可以尝试增加手术时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2020-06-16
    • 2016-03-08
    • 2018-07-19
    相关资源
    最近更新 更多