我正在关注一些教程here,以了解如何在部署的Jboss EAP 6.4服务器上使用骆驼路由。我目前的应用程序的目标非常简单,我想从ActiveMQ主题读取并注销。下面的代码概括了我的行动:未执行的路由:camel/fuse/activemq
package com.mycompany;
import javax.ejb.Startup;
import javax.enterprise.context.ApplicationScoped;
import javax.jms.ConnectionFactory;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.cdi.ContextName;
import org.apache.camel.component.jms.JmsComponent;
@ApplicationScoped
@Startup
@ContextName("com.mycompany")
public class CamelRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
System.out.println("### we are in the main");
final ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
getContext().addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(factory));
System.out.println("#### route being called");
from("jms:topic:activemq/topic/myTopic").log("###### we are in here with this message ${body}");
}
}
我也有一个启动类来测试我的路线:
package com.mycompany;
import org.apache.camel.main.Main;
public class Launcher {
public static void main(final String... args) throws Exception {
final Main main = new Main();
main.addRouteBuilder(new CamelRoute());
main.run(args);
}
}
如果我通过以下Maven命令启动我的路线,我可以接收来的所有消息activemq主题。所以我知道,如果我手动启动路线,我至少可以检索数据。
mvn clean install exec:java -Dexec.mainClass=com.mycompany.Launcher
但是,一旦我将我的应用程序部署到服务器(作为jar,启用),同样不能说。我的system.out语句在日志中都不明显。我几乎觉得我缺少额外的配置来“启动”应用程序。
注意:我在CamelRoute类中添加了用于启动的EJB注释,但这并没有解决问题。我在这里错过了很明显的东西吗
从JBoss EAP 6.4日志输出一次我部署的jar:
04:18:21,390 INFO [org.jboss.as.repository] (HttpManagementService-threads - 49) JBAS014900: Content added at location C:\bin\jboss-fuse\jboss-eap-6.4\standalone\data\content\99\f271f8372007ee6a2bce37668656acb80ef160\content
04:18:21,427 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "camel-java-1.0.0-SNAPSHOT.jar" (runtime-name: "camel-java-1.0.0-SNAPSHOT.jar")
04:18:21,431 INFO [org.wildfly.extension.camel] (MSC service thread 1-4) @ContextName annotation found
04:18:21,442 WARN [org.jboss.weld.deployer] (MSC service thread 1-6) JBAS016012: Deployment deployment "camel-java-1.0.0-SNAPSHOT.jar" contains CDI annotations but beans.xml was not found.
04:18:21,464 INFO [org.jboss.as.server] (HttpManagementService-threads - 49) JBAS015859: Deployed "camel-java-1.0.0-SNAPSHOT.jar" (runtime-name : "camel-java-1.0.0-SNAPSHOT.jar")
你有没有在服务器上运行它的工作?我怀疑你的应用一启动就会死亡。你需要确保它永远运行。检查文档的这一点。 –
@SoucianceEqdamRashti对,我上面提到的maven命令在没有服务器的情况下运行。它永远持续下去,没有终点。 &&部署到eap服务器时,我发现.jar文件是“部署的”,但没有一个system.out语句正在通过。 – angryip
最好查看保险丝团队。这是一个商业应用程序。 –