哪个在DefaultMessageListenerContainer中使用CachingConnectionFactory或缓存更好?

时间:2015-11-02 08:34:12

标签: java spring caching spring-jms

使用spring-jms时,spring提供了2个选项,用于连接和会话缓存以提高性能。

  1. 使用CachingConnectionFactory并缓存会话,也可以选择缓存生产者和消费者。
  2. 使用DefaultMessageListenerContainer可以将cacheLevel设置为[1:连接缓存,2:会话缓存],使用3还可以缓存使用者。
  3. 我的问题是,为什么spring创建了冗余功能?哪一个在性能方面是最佳和快速的?

1 个答案:

答案 0 :(得分:2)

缓存工厂专为短期会话而设计,例如使用JmsTemplate执行的操作。

除非您对容器的线程执行JmsTemplate操作,否则通常不需要侦听器容器(因为它的会话通常是长期的),以参与容器的事务。

在这种情况下,消费者不应该被工厂缓存,尤其是在使用变量并发时。请参阅container javadocs