【Azure 事件中心】Event Hub 消费端出现 Timeout Exception,errorContext中 LINK_CREDIT为0的解释

简介: 【Azure 事件中心】Event Hub 消费端出现 Timeout Exception,errorContext中 LINK_CREDIT为0的解释

问题描述

在使用Event Hub SDK消费数据过程中,出现大量的Timeout Exception,详细消息为:

com.microsoft.azure.eventhubs.TimeoutException: Entity(xxxxxx): Send operation timed out at 2022-08-15T00:50:12.346Z[Etc/UTC]., errorContext[NS: XXX-XXX.servicebus.chinacloudapi.cn, PATH: XXXXXX, REFERENCE_ID: 43E72AB75C05F043E92D9383B72E962A_G2, LINK_CREDIT: 0]  

 

LINK_CREDIT解释

 

(Source Link: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide#flow-control)

以上内容主要解释了 Event Hub使用AMQP协议时,客户端会根据AMQP的架构先创建Connection,然后时Session,最后是Link。而Send/Receive Message就发生在所建立的Link中。

Network Connection:

 

Session & Link

 

而在Link中,它通过LINK_CREDIT来进行流量控制:

  • 在LINK上,传输只发生于发送者有足够的“LINK_CREDIT(链接信用额度)”时。
  • LINK_CREDIT是接收者使用流程行为原语所设置的计数器,其范围是链接。
  • 将LINK_CREDIT分配给发送者时,将通过传递消息来尝试用完LINK_CREDIT额度。
  • 每个消息传递使剩余的LINK_CREDIT减 1。 当LINK_CREDIT为0时,便会停止传递。

 

参考文档

AMQP 1.0 in Azure Service Bus and Event Hubs protocol guide : https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide#flow-control

 

[END]

相关文章
|
4月前
|
Java
【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out
【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out
|
4月前
|
Java 网络安全 开发工具
【Azure 事件中心】Event Hub 无法连接,出现 Did not observe any item or terminal signal within 60000ms in 'flatMapMany' 的错误消息
【Azure 事件中心】Event Hub 无法连接,出现 Did not observe any item or terminal signal within 60000ms in 'flatMapMany' 的错误消息
144 1
|
4月前
【Azure 事件中心】Azure Event Hub客户端遇见 Expired Heartbeat 错误
【Azure 事件中心】Azure Event Hub客户端遇见 Expired Heartbeat 错误
|
4月前
|
Linux API 网络架构
【Azure 事件中心】通过 az rest --method get 如何获得Event Hub Entity 级的统计指标
【Azure 事件中心】通过 az rest --method get 如何获得Event Hub Entity 级的统计指标
|
4月前
|
监控 Java 开发工具
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
【事件中心 Azure Event Hub】Event Hub Java SDK的消费端出现不消费某一个分区中数据的情况,出现IdleTimerExpired错误消息记录
|
4月前
|
分布式计算 Java Spark
【事件中心 Azure Event Hub】使用Logstash消费EventHub中的event时遇见的几种异常(TimeoutException, ReceiverDisconnectedException)
【事件中心 Azure Event Hub】使用Logstash消费EventHub中的event时遇见的几种异常(TimeoutException, ReceiverDisconnectedException)
|
4月前
|
Java 开发工具
【事件中心 Azure Event Hub】关于EventHub中出现Error时候的一些问题(偶发错误,EventHub后台升级,用户端错误,Retry机制的重要性)
【事件中心 Azure Event Hub】关于EventHub中出现Error时候的一些问题(偶发错误,EventHub后台升级,用户端错误,Retry机制的重要性)
|
4月前
|
消息中间件 存储 Kafka
【Azure 事件中心】适用Mirror Maker生产数据发送到Azure Event Hub出现发送一段时间后Timeout Exception: Expiring 18 record(s) for xxxxxxx: 79823 ms has passed since last append
【Azure 事件中心】适用Mirror Maker生产数据发送到Azure Event Hub出现发送一段时间后Timeout Exception: Expiring 18 record(s) for xxxxxxx: 79823 ms has passed since last append
|
4月前
|
Java 开发工具
【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position
【Azure 事件中心】使用Azure AD认证方式创建Event Hub Consume Client + 自定义Event Position
|
4月前
|
JSON 数据格式 Python
【Azure 应用服务】Azure Function Python函数中,如何获取Event Hub Trigger的消息Event所属于的PartitionID呢?
【Azure 应用服务】Azure Function Python函数中,如何获取Event Hub Trigger的消息Event所属于的PartitionID呢?