java - 为什么在 ActiveMQ 未启动的情况下,我的 War 文件(带有 Camel 代码)无法在 JBoss 7 上部署?

标签 java jboss7.x activemq apache-camel

我是 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/

相关文章:

c# - ActiveMQ - 恢复连接后 CreateSession 故障转移超时

jms - activemq 队列中所有消息的生存时间

java - 我们可以有一个字段在 Java 中实现两个或多个接口(interface)吗?

java - JDBC 中的 PACKAGE.TABLENAME%ROWTYPE

java - 用 retrofit2 发送这个 formjson

java - 如何在 JBoss 7 中从一台机器向 JMS 服务器发送消息并从另一台机器接收消息

java - 如何在 jpa 监听器中获取实体管理器或事务

maven - 生命周期配置未涵盖插件执行(JBossas 7 EAR 原型(prototype))

activemq - javax.jms.InvalidClientIDException : Broker: localhost - Client: FS_Proceduer already connected from/127. 0.0.1:port

java - Java中String的字符编码是什么?