2017-12-07 11 views
0

私のJMS構成は次のようになっています(Springブート1.3.8)。Spring起動時にセッションを閉じるJMS CachingConnectionFactory

@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を使用

答えて

1

はい、セッションが終了しますJmsTemplate。 javadocはフレームワークの外部での直接使用を指します。

関連する問題