java - 使用Spring CachingConnectionFactory时什么时候适合缓存Consumers?

标签 java spring jms spring-jms

Spring 包含一个名为 CachingConnectionFactory 的类。此类中的一个变量是一个名为cacheProducers 的 boolean 值。默认情况下,该值为 true。可以使用 setCacheProducers(false) 将此变量设置为 false。

什么时候将其设置为 false 合适? 设置为 false 有什么好处和坏处?

背景: 我们正在对应用程序进行性能测试,并使用 Spring JMS 每秒向 JMS 发送数千条消息。分析我们的代码,我们发现 session.createProducer 调用消耗了总处理时间的 60% 以上,并且工厂当前设置为 setCacheProducers(false)。将此值设置为 true 会产生什么后果?

最佳答案

将其设置为false几乎违背了整个目的。您只需缓存连接即可。

如果您想自己管理生产者生命周期(例如,将 execute()SessionCallback 一起使用时),您可能需要将其设置为 false。但是,当您使用更高级别的抽象(send()convertAndSend() 等)时,您通常希望它是 true。

这是用于Jmstemplate的。通常不建议将 CachingConnectionFactoryDefaultMessageListenerContainer 一起使用。

关于java - 使用Spring CachingConnectionFactory时什么时候适合缓存Consumers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672419/

相关文章:

java - 使用 Couchbase 进行单元和集成测试

java - 查询方法参数转换异常

jms - 如何删除 JMS 客户端的 RFH2 header

java - 通过通知 JBoss AS 中实体 EJB 的更改来拥有外部 Java 应用程序

java - 在 RxJava 中调用 Observable 的任何订阅者回调之前执行操作

java - 为什么我不需要环境接口(interface)的配置 bean

java - Java 8 和 Java 13 中的 Math.pow() 返回不同的结果

java - 响应式(Reactive)应用程序中的事务回滚

java - JMS/Hornetq = 如何在不受信任的网络中确保安全?

java-me - 我如何开始使用 J2ME?