Spring - когда объект JndiObjectFactoryBean кэшируется, сохраняет ли он какое-либо соединение с брокером JMS открытым?

Мы настраиваем наши назначения JMS через поиск JNDI следующим образом:

@Bean
JndiObjectFactoryBean myTopic(@Value("${topic}") String topic,
                              JndiTemplate jndiTemplate) {

    JndiObjectFactoryBean jndiObjectFactoryBean = new JndiObjectFactoryBean();
    jndiObjectFactoryBean.setJndiTemplate(jndiTemplate);
    jndiObjectFactoryBean.setJndiName(topic);

    return jndiObjectFactoryBean;
}

При инициализации этого bean-компонента Spring подтверждает, что объект существует, и кэширует его для дальнейшего использования. Включает ли кеширование этого пункта назначения постоянное соединение с нашим брокером? Или соединение создается физически только при создании экземпляра нашего CachingConnectionFactory?

1
0
163
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

(Единственное и совместно используемое) соединение создается при первом вызове createConnection() на своем экземпляре CachingConnectionFactory и освобождается при вызове destroy() или resetConnection(), как указано в контракте (CachingConnectionFactory наследуется от SingleConnectionFactory):

A JMS ConnectionFactory adapter that returns the same Connection from all createConnection() calls, and ignores calls to Connection.close()

Другие вопросы по теме