我的JMS配置如下所示(Spring 1.3.8);
@Configuration
@EnableJms
public class JmsConfig {
@Autowired
private AppProperties properties;
@Bean
TopicConnectionFactory topicConnectionFactory() throws JMSException {
return new TopicConnectionFactory(properties.getBrokerURL(), properties.getBrokerUserName(),
properties.getBrokerPassword());
}
@Bean
CachingConnectionFactory connectionFactory() throws JMSException {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(topicConnectionFactory());
connectionFactory.setSessionCacheSize(50);
return connectionFactory;
}
@Bean
JmsTemplate jmsTemplate() throws JMSException {
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory());
jmsTemplate.setPubSubDomain(Boolean.TRUE);
return jmsTemplate;
}
@Bean
DefaultJmsListenerContainerFactory defaultContainerFactory() throws JMSException {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setPubSubDomain(Boolean.TRUE);
factory.setRecoveryInterval(30 * 1000L);
return factory;
}
}这应该没问题的。但我担心的是CachingConnectionFactory的医生写了什么
特别是这些部分;
注意:此ConnectionFactory要求显式关闭从其共享连接获得的所有会话。 还请注意,从缓存会话中获得的MessageConsumers在会话最终从池中删除之前不会关闭。在某些情况下,这可能会导致语义副作用。
我以为框架处理了关闭会话和连接部分?如果没有,我应该如何正确地关闭它们?
还是我漏掉了什么?
如有任何帮助,我们将不胜感激:)
F.Y.I :我用SonicMQ做经纪人
发布于 2017-12-07 16:30:05
是的,JmsTemplate将关闭会话;javadocs指的是框架之外的直接使用。
https://stackoverflow.com/questions/47695799
复制相似问题