如何高效使用 JMS

 常见问题解答 > JMS > 如何高效使用 JMS

如何高效使用 JMS?

JMS 旨在实现高性能。特别是,它的设计意味着您应该在应用程序启动时预先创建多个对象,然后在整个应用程序中重复使用它们。例如,建议您预先创建并重复使用以下对象:

  • 连接
  • 会话
  • 消息生产者
  • 消息消费者

原因是,上面每个对象的创建和销毁通常都需要与 JMS 代理进行单独的请求和响应,以确保其正常工作。例如,创建连接、会话、生产者,然后发送消息,最后关闭所有内容,可能会导致与服务器进行 7 次请求-响应!

注意一个小技巧 - 您可以重复使用相同的 MessageProducer 来向不同的目的地发送消息;只需使用空目的地创建它,并在发送方法中指定它。

使用空目的地创建的 MessageProducer 实例是匿名生产者,因此代理在创建这些实例时不会触发生产者警报。这意味着当池化的 MessageProducer 正在使用时,将永远不会发送生产者警报。

在 JMS 中使用池化

为了高效使用 JMS,我们建议您使用 Camel 来隐藏 JMS API 并 将消息传递绑定到您的 Bean

或者,尝试使用 Spring 的 MessageListenerContainer 来消费消息,并使用 JmsTemplate 来发送消息 - 但请 注意一些问题

其他性能提示

另请参阅

Java 连接器体系结构

Java 连接器体系结构 通过使用 JCA 资源适配器 支持对 JMS 连接、会话和 MessageListeners 进行池化,以及并行消息处理、线程池化以及事务和异常处理。

所有这些优势都可以在 Spring 的 MessageListenerContiner 中获得,**除了** XA 事务。如果您需要 XA 支持,则必须使用 JCA。

JCA 通常在 J2EE 容器中通过 MDB 使用;尽管存在一个基于 POJO 的 Spring JCA 容器,您可以使用它,它简单、轻量级且易于嵌入到 Tomcat 或任何 J2SE 应用程序中。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。