Apache camel 到ActiveMQ目标的驼峰路由

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

我正在尝试设置从文件系统到ActiveMQ上运行的JMS目标的基本路由。我的ActiveMQ服务器使用默认设置在本地主机上运行,并且在ActiveMQ/Queue/TestQueue上有一个可用的队列。 因此,我编写了以下Java路线:

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库,我发现问题在于协议。现在它工作了,谢谢!