Spring JMS:为什么总是使用 started=false 创建 CachingConnectionFactory?

Spring JMS: Why CachingConnectionFactory is created always with started=false?

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

我有以下内容:

@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 o.s.j.c.CachingConnectionFactory - Established shared JMS Connection: ActiveMQConnection {id=ID:sometext,clientId=ManolitoActiveMQ,started=false}

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

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

3370 [main] INFO o.s.j.c.CachingConnectionFactory - Established shared JMS Connection: ActiveMQConnection {id=ID:sometext,clientId=ManolitoActiveMQ,started=false}

好的,这是预期的,但又出现了 started=false

它在某些方面令人困惑,因为 cachingConnectionFactory.createConnection().start() 行以 start() 结尾,用于 Connection

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

注意 started=false 在连接的 toString() 中——它与连接工厂无关;它与刚刚创建的连接有关。

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

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