Azure事件中心超时

时间:2018-01-09 17:18:33

标签: c# azure azure-eventhub

在尝试向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

1 个答案:

答案 0 :(得分:3)

根据您提到的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服务状态站点以查看是否存在任何已知的服务中断。

  •