使用spring-jms时,spring提供了2个选项,用于连接和会话缓存以提高性能。
CachingConnectionFactory
并缓存会话,也可以选择缓存生产者和消费者。DefaultMessageListenerContainer
可以将cacheLevel设置为[1:连接缓存,2:会话缓存],使用3还可以缓存使用者。我的问题是,为什么spring创建了冗余功能?哪一个在性能方面是最佳和快速的?
答案 0 :(得分:2)
缓存工厂专为短期会话而设计,例如使用JmsTemplate
执行的操作。
除非您对容器的线程执行JmsTemplate
操作,否则通常不需要侦听器容器(因为它的会话通常是长期的),以参与容器的事务。
在这种情况下,消费者不应该被工厂缓存,尤其是在使用变量并发时。请参阅container javadocs。