我有一个使用的示例应用程序演示
- Spring Framework
4.2.5
- ActiveMQ
5.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 o.s.j.c.MachineConnectionFactory-已建立共享JMS连接:ActiveMQ连接{id=id:sometext,clientId=ManolitoActiveMQ,started=false}
当应用程序启动并读取Established shared JMS Connection
时,有没有意识到该消息,但为什么显示started=false
?我认为应该是真的。
如果我评论cachingConnectionFactory.createConnection().start();
并启动应用程序,则不会出现上面显示的消息,好吧,这是意料之中的事。但稍后通过JMX
,当我开始发送消息时,我可以再次看到
3370[main]INFO o.s.j.c.MachineConnectionFactory-已建立共享JMS连接:ActiveMQ连接{id=id:sometext,clientId=ManolitoActiveMQ,started=false}
好的,这是意料之中的事,但started=false
再次出现
由于连接的cachingConnectionFactory.createConnection().start()
行以start()
结尾,因此在某些方面会混淆
- 所以为什么实际上总是出现
started=false
started
属性何时或如何与true
一起出现
请注意,started=false
在连接的toString()
中,它与连接工厂无关;它与刚刚创建的连接有关。
logger.info("Established shared JMS Connection: " + this.connection);
如果需要,稍后将启动连接本身。