繁体   English   中英

Azure事件中心超时

[英]Azure Event Hub timeouts

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

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

用于增加超时的演示代码

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

messagingFactory = MessagingFactory.CreateFromConnectionString(builder.ToString());

有关Timeout异常的更多信息,请参阅此文档

常见原因

导致此错误的原因有两个:配置错误或瞬态服务错误。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM