0

我有一个示例应用程序演示使用:

  • 春天框架4.2.5
  • 活动MQ5.13.3

我有以下内容:

@Bean(name="connectionFactory")
public CachingConnectionFactory cachingConnectionFactory(ActiveMQConnectionFactory selectedActiveMQConnectionFactory) throws JMSException{
    CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
    cachingConnectionFactory.setClientId("ManolitoActiveMQ");
    cachingConnectionFactory.setTargetConnectionFactory(selectedActiveMQConnectionFactory);
    cachingConnectionFactory.setSessionCacheSize(10);
    cachingConnectionFactory.createConnection().start();
    return cachingConnectionFactory;
}

当我使用该cachingConnectionFactory.createConnection().start();行时,我可以看到当我的应用程序启动时它显示:

3370 [main] INFO osjcCachingConnectionFactory - 已建立共享 JMS 连接:ActiveMQConnection {id=ID:sometext,clientId=ManolitoActiveMQ,started=false}

当应用程序启动并阅读时,是否有预期该消息的意义,Established shared JMS Connection但为什么会显示started=false?我觉得应该是真的。

如果我评论cachingConnectionFactory.createConnection().start();并启动应用程序,上面显示的消息不会出现,好的,这是预期的。但是后来JMX当我开始发送消息时,我又可以看到

3370 [main] INFO osjcCachingConnectionFactory - 已建立共享 JMS 连接:ActiveMQConnection {id=ID:sometext,clientId=ManolitoActiveMQ,started=false}

好的,这是预期的,但再次started=false出现

在某些方面令人困惑,因为该cachingConnectionFactory.createConnection().start()行以start()连接结尾

  1. 所以为什么几乎总是出现started=false
  2. 该属性何时或如何started出现true
4

1 回答 1

2

请注意,started=falsetoString()连接中 - 它与连接工厂无关;它与刚刚创建的连接有关。

logger.info("Established shared JMS Connection: " + this.connection);

如果需要,连接本身将稍后启动。

于 2016-05-21T20:34:57.963 回答