第 26 章 处理 low Consumers


具有服务器端队列较慢的使用者可能会对服务器性能造成严重问题。随着消息在消费者的服务器端队列中不断积累,内存使用量会增加。因此,服务器可能会进入分页模式,这可能会对性能造成负面影响。另一个重要问题是,如果 consumer-windows-size 属性大于 0,则发送到客户端消息缓冲区的消息可以继续等待被使用。可以设置条件,以便不会足够快速地使用消息的使用者可以与服务器断开连接。

在速度较慢的消费者是 MDB 时,JBoss EAP 服务器管理连接。MDB 断开连接后,消息将返回到使用 MDB 的队列,MDB 自动重新连接,此时,消息将再次负载平衡到队列上的所有 MDB。此过程适用于侦听持久主题的 MDB。对于 JMS 使用者,如果速度慢,则为断开连接,则断开连接,只有在重新连接 -attempts 设为 -1 或大于 0 时才会重新 连接。

如果是不可达的 JMS 订阅者,或者带有不可持久性订阅的 MDB,连接将断开连接,从而导致订阅被删除。如果不可达目的订阅者重新连接,则会创建一个新的不可持久性订阅,它开始只消耗发送到该主题的新消息。

确定消费者是否慢慢检查特定消费者已确认的消息数量的计算。它不考虑是否在消费者上启用了流控制,或者消费者是否在流传输大型消息,例如:在配置缓慢的使用者检测时请记住这一点。

使用调度的线程池执行慢速消费者检查。服务器上启用了消费者检测缓慢的队列将在内部 java.util.concurrent.ScheduledThreadPoolExecutor 实例中产生一个新条目。如果队列数量较多,并且 慢消费-检查-period 相对较低,那么执行某些检查时可能会延迟。但是,这不会影响检测算法使用的计算准确性。有关这个线程池的详情,请参阅线程管理

每个 地址设置 较慢的消费者处理速度较慢。有关配置 address-setting 的更多信息,请参阅地址设置,并参阅附录中的 address-setting 属性 列表。有三个属性可用于配置较慢使用者的处理:它们是:

slow-consumer-check-period
慢速消费者的检查频率(秒数)。默认值为 5
slow-consumer-policy

决定识别慢速消费者时发生的情况。有效选项为 KILLNOTIFY

  • KILL 将终止消费者的连接,这将影响使用同一连接的任何客户端线程。
  • NOTIFY 将向客户端发送 CONSUMER_SLOW 管理通知。

默认值为 NOTIFY

slow-consumer-threshold
在消费者被视为缓慢之前允许的最小消息消耗率。默认值为 -1,它没有绑定。

使用管理 CLI 来读取任何属性的当前值:例如,使用以下命令来读取 address-setting 的当前 slow-consumer- policy,名称为 myAddress

/subsystem=messaging-activemq/server=default/address-setting=myAddress:read-attribute(name=slow-consumer-policy)
Copy to Clipboard Toggle word wrap

同样,使用以下示例来设置相同的 slow-consumer-policy

/subsystem=messaging-activemq/server=default/address-setting=myAddress:write-attribute(name=slow-consumer-policy,value=<NEW_VALUE>)
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat