Apache camel 到ActiveMQ目标的驼峰路由
我正在尝试设置从文件系统到ActiveMQ上运行的JMS目标的基本路由。我的ActiveMQ服务器使用默认设置在本地主机上运行,并且在ActiveMQ/Queue/TestQueue上有一个可用的队列。 因此,我编写了以下Java路线:Apache camel 到ActiveMQ目标的驼峰路由,apache-camel,Apache Camel,我正在尝试设置从文件系统到ActiveMQ上运行的JMS目标的基本路由。我的ActiveMQ服务器使用默认设置在本地主机上运行,并且在ActiveMQ/Queue/TestQueue上有一个可用的队列。 因此,我编写了以下Java路线: public static void main(String args[]) throws Exception { CamelContext context = new DefaultCamelContext(); ConnectionFacto
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
"vm://localhost");
context.addComponent("jms",
JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
context.addRoutes(new RouteBuilder() {
public void configure() {
from("file:D:\\camel\\in").to(
"activemq:queue:TestQueue");
}
});
context.start();
Thread.sleep(10000);
context.stop();
}
不幸的是,出现了以下异常:
Exception in thread "main" org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> To[activemq:queue:TestQueue] <<< in route: Route(route1)[[From[file:D:\camel\in]] -> [To[activemq:queue... because of Failed to resolve endpoint: activemq://queue:TestQueue due to:
No component found with scheme: activemq
at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:945)
. . . .
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: activemq://queue:TestQueue due to: No component found with scheme: activemq
我尝试了to路由的其他一些变体,例如activemq:queue:activemq/queue/TestQueue,但没有成功。你知道怎么做吗?
谢谢在命名JMS组件JMS时,您需要引用队列,如下所示: jms:queue:TestQueue 而不是
activemq:queue:TestQueue您必须使用tcp://0.0.0.0:61616 用于连接到外部ActiveMQ服务器的协议。同样奇怪的是,您在发布到vm后没有任何错误消息:。您的项目中是否包含了所有slfj日志库 您可能缺少依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jms</artifactId>
<version>2.18.1</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
<version>5.6.0</version>
</dependency>
谢谢你的回复。我已经将JMS端点更改为JMS:queue:TestQueue,错误消失了。但是,从ActiveMQ中,我看不到该队列的挂起消息。我的理解是否正确,in路由中包含的文件将作为JMS消息发送?Ps也尝试使用jms:activemq/queue/TestQueue,没有收到错误但没有收到消息。如果使用Camel接收jms消息,请使用相同的URI,例如fromjms:queue:TestQueue。谢谢!通过在类路径中包含slfj库,我发现问题在于协议。现在它工作了,谢谢!