19.2. 调优 Java 消息服务(JMS)


如果使用 JMS API,请查看以下信息以获取有关如何提高性能的提示。

  • 禁用消息 ID。

    如果您不需要消息 ID,请在 MessageProducer 类中使用 setDisableMessageID () 方法来禁用它们。将值设为 true 可消除创建唯一 ID 并缩小消息大小的需求。

  • 禁用消息时间戳。

    如果您不需要消息时间戳,请在 MessageProducer 类中使用 setDisableMessageTimeStamp () 方法来禁用它们。将值设为 true 可消除创建时间戳的开销,并减少消息的大小。

  • 避免使用 ObjectMessage

    ObjectMessage 用于发送具有序列化对象的消息,即消息或有效负载的正文作为字节数发送。Java 序列化形式甚至小对象非常大,并在有线上占用大量空间。与自定义捆绑技术相比,它也很慢。只有在无法使用其它消息类型时才使用 ObjectMessage,例如,如果您不知道有效负载的类型,直到运行时为止。

  • 避免 AUTO_ACKNOWLEDGE.

    选择消费者的确认模式会影响性能,因为通过网络发送确认消息导致了额外的开销和流量。AUTO_ACKNOWLEDGE 会导致这个开销,因为它需要为客户端收到的每个消息从服务器发送确认。如果可能,请使用 DUPS_OK_ACKNOWLEDGE,它以 lazy 方法或 CLIENT_ACKNOWLEDGE 确认消息,这意味着客户端代码将调用一个方法来确认消息。或者,通过转换的会话中确认或提交许多确认。

  • 避免持久消息。

    默认情况下,JMS 消息是持久的。如果不需要持久消息,请将其设置为非持久。持久化消息会产生额外的开销,因为它们被保留到存储中。

  • 使用 TRANSACTED_SESSION 模式在单个事务中发送和接收消息。

    通过在单个事务中批处理消息,AMQ Broker 只需要提交中的一个网络往返,而不是每次发送或接收。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部