2011-12-02 44 views
4

我工作的一个项目,我有一个Tomcat 7中的几个战争文件有一个嵌入式的ActiveMQ(5.5.1)相同的Tomcat内代理进行通信。多战争使用共享嵌入ActiveMQ的

我想知道什么是管理这个正确启动和停止代理中的最佳实践,以及如何。

其实我尝试在涂用server.xml全局JNDI条目,并在每个战得到的查找我的ActiveMQ连接。与代理的第一个连接隐式启动它。但是用这种方法,我遇到了各种各样的问题,例如已经存在的实例或数据存储中的锁。

我应该使用,而不是它使用BrokerFactory明确启动代理额外的战争吗?在这种情况下,如何确保这场战争首先在Tomcat中执行?我该如何阻止我的经纪人以及哪里?

感谢您的帮助。

回答

1

从文档...

如果您使用的是VM运输,并希望在代理启动之前明确配置 嵌入式代理存在,你可以先创建JMS 连接的机会。如果使用VM运输目前的ActiveMQ将 自动创建一个代理,并没有一个 已经配置。 (在5.2就可以使用waitForStart和 创建=为连接URI假选项)

因此,要解决这一点,如果你正在使用Spring,你不妨使用 取决于-on属性,使您的JMS ConnectionFactory取决于 嵌入式代理,以避免发生这种情况。例如

看到这些网页以获取更多信息......

http://activemq.apache.org/vm-transport-reference.html

http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

http://activemq.apache.org/how-do-i-restart-embedded-broker.html