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表示されます

行がConnectioncachingConnectionFactory.createConnection().start()で終わっているため、どこか混乱してstart()います。

  1. したがって、実際に常に表示されるのはなぜstarted=falseですか?
  2. startedその属性はいつ、またはどのように表示されtrueますか?
4

1 に答える 1

2

started=falseは接続の中にあることに注意してtoString()ください。接続ファクトリとは関係ありません。これは、作成したばかりの接続に関連しています。

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

接続自体は、必要に応じて後で開始されます。

于 2016-05-21T20:34:57.963 に答える