私の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を使用