在 DefaultMessageListenerContainer 中使用 CachingConnectionFactory 或缓存哪个更好?
Which is better to use CachingConnectionFactory or caching in DefaultMessageListenerContainer?
使用 spring-jms 时,spring 提供了 2 个选项用于连接和会话缓存以提高性能。
- 使用
CachingConnectionFactory
并缓存会话,您也可以选择缓存生产者和消费者。
- 使用
DefaultMessageListenerContainer
您可以将缓存级别设置为 [1: 连接缓存,2:session 缓存],使用 3 您也可以缓存消费者。
我的问题是,为什么 spring 创建了冗余功能?哪一个在性能方面是最佳且快速的?
缓存工厂专为短期会话而设计,例如使用 JmsTemplate
执行的操作。
侦听器容器通常不需要它(因为它的会话通常是长期存在的),除非您在容器的线程上执行 JmsTemplate
操作 - 以参与容器的事务。
在那种情况下,消费者不应该被工厂缓存,尤其是在使用可变并发的情况下。见 container javadocs.
使用 spring-jms 时,spring 提供了 2 个选项用于连接和会话缓存以提高性能。
- 使用
CachingConnectionFactory
并缓存会话,您也可以选择缓存生产者和消费者。 - 使用
DefaultMessageListenerContainer
您可以将缓存级别设置为 [1: 连接缓存,2:session 缓存],使用 3 您也可以缓存消费者。
我的问题是,为什么 spring 创建了冗余功能?哪一个在性能方面是最佳且快速的?
缓存工厂专为短期会话而设计,例如使用 JmsTemplate
执行的操作。
侦听器容器通常不需要它(因为它的会话通常是长期存在的),除非您在容器的线程上执行 JmsTemplate
操作 - 以参与容器的事务。
在那种情况下,消费者不应该被工厂缓存,尤其是在使用可变并发的情况下。见 container javadocs.