搜索

7.7. 调整 Jakarta 消息传递

download PDF

如果使用 Jakarta Messaging API,请查看以下信息,以了解有关如何提高性能的提示。

  • 禁用消息 ID。

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

  • 禁用消息时间戳。

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

  • 避免使用 ObjectMessage

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

  • 避免 AUTO_ACKNOWLEDGE.

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

  • 避免持久消息。

    默认情况下,Jakarta Messaging 消息是 durable。如果您不需要持久消息,请将它们设置为 非持久消息。持久化消息会导致大量开销,因为它们被保留到存储中。

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

    通过在单一事务中批处理消息,JBoss EAP 中集成的 ActiveMQ Artemis 服务器只需要一个网络往返提交,而不是在每次发送或接收时。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.