Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 关闭Spring Boot JMS CachingConnectionFactory中的会话_Spring Boot_Jms_Spring Jms - Fatal编程技术网

Spring boot 关闭Spring Boot JMS CachingConnectionFactory中的会话

Spring boot 关闭Spring Boot JMS CachingConnectionFactory中的会话,spring-boot,jms,spring-jms,Spring Boot,Jms,Spring Jms,我的JMS配置如下(Spring boot 1.3.8) 这应该行得通。但我担心的是医生上写了什么 特别是这些部分, 注意:此ConnectionFactory要求显式关闭从其共享连接获得的所有会话 还请注意,从缓存会话获得的MessageConsumers在会话最终从池中删除之前不会关闭。在某些情况下,这可能会导致语义上的副作用 我认为框架处理了结束会话和连接部分?如果没有,;我应该如何正确地关闭它们 或者我错过了什么 感谢您的帮助:) F.Y.I:我使用SonicMQ作为代理是的,JmsTe

我的JMS配置如下(Spring boot 1.3.8

这应该行得通。但我担心的是医生上写了什么

特别是这些部分,

注意:此ConnectionFactory要求显式关闭从其共享连接获得的所有会话

还请注意,从缓存会话获得的MessageConsumers在会话最终从池中删除之前不会关闭。在某些情况下,这可能会导致语义上的副作用

我认为框架处理了结束会话和连接部分?如果没有,;我应该如何正确地关闭它们

或者我错过了什么

感谢您的帮助:)


F.Y.I:我使用SonicMQ作为代理

是的,
JmsTemplate将关闭会话;javadocs指的是在框架之外直接使用。

是的,
JmsTemplate
将关闭会话;javadocs指的是框架外的直接使用。

你说的框架外直接使用是什么意思?我的意思是框架组件(
JmsTemplate
,侦听器容器)将在适当的时候可靠地关闭会话。如果您直接在共享连接上创建自己的会话,您有责任关闭它们。您所说的在框架之外直接使用是什么意思?我的意思是框架组件(
JmsTemplate
,侦听器容器)将在适当的时候可靠地关闭会话。如果您直接在共享连接上创建自己的会话,您有责任关闭它们。
    @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;
    }
}