8.4. 处理慢速消费者


缓慢的消费者需要花费大量时间来处理每条消息。在这些情况下,不建议在客户端上缓冲消息。相反,消息仍保留在代理中,以供其他消费者使用。关闭缓冲区的一个好处在于,它提供队列中多个使用者之间的确定性分配。要通过禁用客户端缓冲区来处理缓慢的消费者,请将窗口大小设置为 0。

为较慢的用户设置窗口大小

以下示例演示了如何使用 AMQ 核心协议 JMS 客户端(消息使用者较慢)将窗口大小设置为 0。

流程

  • 如果客户端使用 JNDI 来实例化其连接工厂,在连接字符串 URL 中包括 consumerWindowSize 参数。将 URL 存储在 JNDI 上下文环境中。以下示例使用 jndi.properties 文件存储 URL。

    java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
    connectionFactory.myConnectionFactory=tcp://localhost:61616?consumerWindowSize=0
    Copy to Clipboard Toggle word wrap
  • 如果客户端不使用 JNDI 来实例化其连接工厂,请将值传递给 ActiveMQConnectionFactory.setConsumerWindowSize()

    ConnectionFactory cf =  ActiveMQJMSClient.createConnectionFactory(...)
    cf.setConsumerWindowSize(0);
    Copy to Clipboard Toggle word wrap

其他资源

请参阅 <install-dir>/examples/standard 中的 no-consumer-buffering 示例,它演示了如何在处理慢速消费者时配置代理以防止消费者缓冲。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部