我是 Camel 和 ActiveMQ 的新手。 我有一些 Java 代码尝试通过 ActiveMQ 使用来自不同应用程序的一些消息:
ConsumerTemplate consumer;
@Consume(uri="activemq:somename")
public void process(Map<String, String> map) {
//do some fancy stuff
}
包含此代码的类位于一个 war 文件中;当我的 ActiveMQ 服务器运行时,它在 JBoss 7 上完美部署,并且代码被正确调用。当服务器未运行时,部署失败并出现以下错误:
Did not receive a response to the deployment operation
within the allowed timeout period [300 seconds].
日志中没有其他错误。 这个consumer是整个应用程序中唯一的ActiveMQ引用; 并且部署失败。
所以我的问题是:如果没有启动ActiveMQ服务器,为什么它不启动?即使服务器没有启动,如何让它启动?
最佳答案
您的代码有一个使用此代码的 ActiveMQ 代理的使用者
@Consume(uri="activemq:somename")
当消费者启动时,它会连接到代理,如果失败,它可能会挂起一段时间。您可以告诉 Camel 启动异步监听器
@Consume(uri="activemq:somename?asyncStartListener=true")
请参阅 Camel JMS 文档了解更多详细信息
关于java - 为什么在 ActiveMQ 未启动的情况下,我的 War 文件(带有 Camel 代码)无法在 JBoss 7 上部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20961534/