EventHub 异常:无法为当前会话或连接分配更多句柄

2023-11-26

我有 C# 控制台应用程序,通过它经常向事件中心发送数据。这个控制台应用程序基本上从 SQL 存储中读取一些数据,并开始将数据推送到事件中心。

整个程序以无限循环/方式运行,就像在 while 控制中一样,每当它收到 SQL 中的任何数据时,它就会从那里提取数据并开始发送到事件中心。

但在某个时刻我收到了这个错误。

“无法为当前会话或连接分配更多句柄。允许的最大句柄数为 4999。请释放资源再试一次。在 Microsoft.ServiceBus.Common......

当我重新启动此控制台应用程序时,它工作正常。但我不知道为什么会出现此错误。

请帮我。

感谢和问候,

RK


TLDR: 在“发送到 EventHub 逻辑”中,确保您正在重用(缓存)同一发送者实例。

The Why:

EventHubs 旨在支持超大规模高吞吐量低延迟事件系统。因此,我们选择依赖一个非常高性能的协议来执行所有运行时操作 - 即Amqp。的好处Amqp协议当构建在其之上的应用程序充分利用其优势时,它就会发挥作用。这是 EventHubs 对象模型映射到 Amqp 工件的方式:

  1. EventHubClient映射到一个 AmqpConnection。基数为 1:1。如果创建时指定了完全相同的 ConnectionStringEventHubClient.CreateFromConnectionString- 底层物理套接字将被共享 - 但 amqp 工件 - AmqpConnection 仍然不同。
  2. 每当客户端调用EventHubClient.Send(EventData),内部,EventHubClient创造1 Amqp 会话 and 该会话中有 1 个 AmqpLink在创建的 AmqpConnection 上EventHubClient。此Session和Link只要相同就可以重复使用EventHubClient实例用于后续发送。
  3. 每当对系统执行任何管理操作时EventHubClient- 因为,管理。操作(如 getPartitionInfo)始终是请求-响应并且需要 2 路通信 -EventHubClient创造1 Amqp 会话 and 该会话中有 2 个 AmqpLink - 一个用于请求的链接,另一个用于响应的链接(例如:想象 REST 的结果Get call).
  4. 每当任何时候,任何子实体都是从创建的EventHubClient - like EventHubSender or EventHubReceiver - EventHubClient创造一个全新的 AmqpSession&&该会话中的 AmqpLink.

使用 eventhub SDK 的客户端应用程序的主要要点是:

每次EventHubClient创建实例 - 在下面创建一个真实的物理套接字。

每次EventHubSender or an EventHubReceiver创建了该套接字创建的实例EventHubClient被重用并在其之上:(a)创建一个 Amqp 会话 - 否。每个连接的 Amqp 会话数限制为 5k -我想这是您的客户端应用程序所达到的限制。 (b) AmqpLink 在该会话内创建 - 这将反过来触发 EventHubs 服务中的实体解析(即有点贵与现有的发送相比EventHubSender).

有关事件中心的更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EventHub 异常:无法为当前会话或连接分配更多句柄 的相关文章

  • 将消息定向给消费者

    我的客户端正在尝试向接收者发送消息 但是我注意到接收者有时没有收到客户端发送的所有消息 因此丢失了一些消息 不确定问题出在哪里 客户端还是接收者 关于为什么会发生这种情况的任何建议 这就是我目前正在做的事情 在接收方 这就是我正在做的事情
  • 使用 Node.js 从 Azure WebJob 轮询 Azure 服务总线队列

    尝试使用用 Node js 编写的 WebJob 轮询 Azure 服务总线队列 我创建了 2 个 WebJobs 第一个是按需的 并向队列发送 10 条唯一的消息 第二个作业是连续的 并轮询队列中的消息 遇到以下问题 轮询速度很慢 平均需
  • 发送/传递的 Azure 服务总线主题订阅消息的日志在哪里?

    搜索无效后 我在哪里可以看到哪些 Azure 服务总线消息 内容 已发送到给定主题 订阅以及哪些消息已交付的日志 列表 我必须激活特殊功能吗 如果有 是哪一个 新的还是 经典 的 Azure 管理门户 Thanks 据我所知 你不能在任何一
  • Redis 与服务总线的发布/订阅场景

    我在 Azure 中有多个服务 我想使用某种发布 订阅服务来同步它们之间的更改 我正在研究 Redis 和 Azure 服务总线 要同步的数据非常简单 大多数是最多 100 个字符的字符串 我想知道我的首选选择是什么 或者我的方向是否正确
  • Azure Function App 不由事件中心触发

    大家好 我编写了 Python 函数来处理传入 EventHub 的 JSON 事件 这些事件是由 Debezium 生成的 这部分工作正常 从 Visual Studio Code 本地执行时 我的 python 代码也运行良好 当我部署
  • 控制Azure服务总线消息监听器在Spring Boot中启动或停止从主题或队列监听

    我想要实现什么 用于启动 停止从队列 主题接收消息的 Azure 服务总线消息侦听器 下面是详细的解释 目前 我已将 Azure 服务总线集成到我的应用程序中 一旦 Spring Boot 应用程序启动 我们就会监听消息 现在我想修改这个逻
  • Azure 函数在 azure 门户上显示 0 次执行

    我是一个蔚蓝新手 我的设置如下 我有一个 IoT 中心 一个事件中心 一个 Azure 函数 其想法是将消息发送到 IoT 中心 根据某种消息类型将它们路由到事件中心 并使用该函数处理这些事件 我创建了一个示例控制台应用程序 用于将消息从我
  • [azure 服务总线 - 如何在 Azure 服务总线中使用 JMS 设置消息 ID

    使用 Spring JMS 向 Azure 服务总线发送消息时 消息 ID 被覆盖 因此 重复检测无法按预期工作 我读过 JMS 文档 其中说 JMSMessageId 不能由生产者设置 它由 JMS 保留供内部使用 现在的问题是如何设置
  • Azure 函数的多个触发器

    我们有一个带有事件中心触发器的 Azure 函数 是否可以在同一 Azure Function 的多个事件中心上设置触发器 不 目前不支持这种情况 来自评论 Ling Toh Jan 18 17 at 18 23 没有计划支持每个函数多个触
  • 尝试使用 java EventHubClient API 将事件发送到 Azure 事件中心时出现“连接中止”错误

    我正在尝试编写一个java发布程序 以向事件中心发送一条消息 但是 当我尝试执行它时 我收到连接中止错误 我正在使用下面的链接 azure eventhubs 和0 9 0版本中指定的maven依赖项下面是我试图遵循的链接和主要方法 htt
  • Azure 服务 TopicClient 线程安全且可重用吗?

    我们正在使用 Azure SDK 将消息发布到服务总线 在 Web API 调用中 我们对每个传入请求重复执行这些任务 MessagingFactory factory MessagingFactory CreateFromConnecti
  • 使用 SendBatchAsync 方法将 1000 条代理消息发送到服务总线

    我有一个应用程序 其中从 SQL DB 获取数据并将其作为代理消息发送到服务总线 这些是步骤 从DB中获取数据 批量为1000 每行数据都转换为代理消息并添加到列表中 使用以下命令将 1000 条中转消息的列表发送到服务总线异步发送批处理
  • 将 Azure 事件中心与 Data Lake Store 连接

    将数据从事件中心发送到 Data Lake Store 的最佳方式是什么 我假设您希望定期将数据从 EventHub 提取到 Data Lake Store 正如 Nava 所说 您可以使用 Azure 流分析将数据从 EventHub 获
  • Azure eventhub 多个分区键指向同一分区

    我们正在开发一个多租户应用程序 其中 eventhub 将在不同租户之间共享 我们将在租户之间分配分区 每个租户将在不同的分区上发送消息 我们希望在分区级别对租户进行身份验证 正如 Microsoft 网站上所述 我们根据租户 ID 定义分
  • 服务总线会话 ReceiveBatchAsync 仅接收 1 条消息

    我正在使用启用了会话的服务总线队列 并且使用相同的 SessionId 发送 5 条消息 我的接收代码使用AcceptMessageSessionAsync获取会话锁 以便它将接收该会话的所有消息 然后它使用session ReceiveB
  • Azure 服务总线主题订阅的锁定持续时间重要性

    我一直在研究服务总线队列和主题的锁定持续时间和更新锁定机制 然而 目前尚不清楚锁定持续时间对于主题订阅到底意味着什么 例如 如果我有一个主题 GameScoreUpdate 并且它有多个订阅者 因此 此主题的任何消息都将传递给所有订阅者 现
  • Azure 服务总线消息队列用户错误指标

    我正在帮助调查和诊断我们遇到的一些问题 并注意到服务总线队列上的用户错误指标正在发生变化 我想确切地知道这个指标的含义 如文档所示https learn microsoft com en us azure service bus messa
  • MassTransit AzureServiceBus 生成的队列

    我有一个托管在 Azure Service Fabric 解决方案中的 MT 设置的工作配置 我有一个发送消息的 API 和一个读取消息的无状态应用程序 在无状态应用程序中 我告诉它使用类型的消息TestMessage具有以下内容 cont
  • 事件中心指标显示大量“其他错误”,如何获取详细信息?

    因此 我使用新门户创建了一个事件中心 当我访问 事件中心 边栏选项卡并浏览到 监控 部分中的 指标 边栏选项卡时 我得到以下图表 我想知道在哪里可以找到有关这些错误的更多信息 有人知道吗 事件中心还可以发出诊断日志 其中包含有关错误的详细诊
  • 直接向订阅发送消息

    是否可以将消息直接发送到订阅队列 设想 消息失败 被丢弃到死信中 该消息已使用 defer 手动拾取 克隆 并且需要发送到它首先被发送到死信的队列 但不是主题 我可以直接向订阅者发送消息吗 我考虑过为每个订阅者创建一个单独的重试队列 处理服

随机推荐