Apache camel 基于文件内容的apachecamel动态路由

Apache camel 基于文件内容的apachecamel动态路由,apache-camel,apache-servicemix,Apache Camel,Apache Servicemix,我正在尝试使用ApacheCamel将文件内容路由到activemq队列。我使用camel轮询特定文件夹中的xml文件,然后将其内容发送到队列。我的问题是我想根据内容值将内容发送到动态队列名称。例如: xml文件内容是 <name="queue1"/> 然后,这意味着这个需要发送到名为“queue1”的队列。如何在camel route spring dsl中使用“to:”参数的“queue1”动态值 谢谢假设您有一个xml文档,您可以使用xpath提取信息并将其设置在一个标题

我正在尝试使用ApacheCamel将文件内容路由到activemq队列。我使用camel轮询特定文件夹中的xml文件,然后将其内容发送到队列。我的问题是我想根据内容值将内容发送到动态队列名称。例如:
xml文件内容是

<name="queue1"/>

然后,这意味着这个需要发送到名为“queue1”的队列。如何在camel route spring dsl中使用“to:”参数的“queue1”动态值


谢谢

假设您有一个xml文档,您可以使用xpath提取信息并将其设置在一个标题中,您可以使用simple

@EndpointInject(uri=“direct:start”)
私人生产企业开工;
@端点注入(uri=“mock:result1”)
私有模拟端点结果1;
@试验
public void testName3()引发异常{
addRoutes(新RouteBuilder(){
@凌驾
public void configure()引发异常{
从(“直接:开始”)
.setHeader(“地址”,xpath(“/address/text()”,String.class))
.recipientList(简单(“mock:${header.address}”);
}
});
结果1.预期信息数(1);
start.sendBody(“result1”);
结果1.断言已满足();
}

假设您有一个xml文档,您可以使用xpath提取信息并将其设置在标题中,您可以使用simple

@EndpointInject(uri=“direct:start”)
私人生产企业开工;
@端点注入(uri=“mock:result1”)
私有模拟端点结果1;
@试验
public void testName3()引发异常{
addRoutes(新RouteBuilder(){
@凌驾
public void configure()引发异常{
从(“直接:开始”)
.setHeader(“地址”,xpath(“/address/text()”,String.class))
.recipientList(简单(“mock:${header.address}”);
}
});
结果1.预期信息数(1);
start.sendBody(“result1”);
结果1.断言已满足();
}

假设您有一个xml文档,您可以使用xpath提取信息并将其设置在标题中,您可以使用simple

@EndpointInject(uri=“direct:start”)
私人生产企业开工;
@端点注入(uri=“mock:result1”)
私有模拟端点结果1;
@试验
public void testName3()引发异常{
addRoutes(新RouteBuilder(){
@凌驾
public void configure()引发异常{
从(“直接:开始”)
.setHeader(“地址”,xpath(“/address/text()”,String.class))
.recipientList(简单(“mock:${header.address}”);
}
});
结果1.预期信息数(1);
start.sendBody(“result1”);
结果1.断言已满足();
}

假设您有一个xml文档,您可以使用xpath提取信息并将其设置在标题中,您可以使用simple

@EndpointInject(uri=“direct:start”)
私人生产企业开工;
@端点注入(uri=“mock:result1”)
私有模拟端点结果1;
@试验
public void testName3()引发异常{
addRoutes(新RouteBuilder(){
@凌驾
public void configure()引发异常{
从(“直接:开始”)
.setHeader(“地址”,xpath(“/address/text()”,String.class))
.recipientList(简单(“mock:${header.address}”);
}
});
结果1.预期信息数(1);
start.sendBody(“result1”);
结果1.断言已满足();
}

我认为最好的方法是将该名称保存到标题,如本例所示:

然后在端点中使用表达式,如下所示:

<recipientList>
    <simple>activemq:queue:${headers.dest}</simple>
</recipientList>

activemq:队列:${headers.dest}

我认为最好的方法是将该名称保存到标题,如本例所示:

然后在端点中使用表达式,如下所示:

<recipientList>
    <simple>activemq:queue:${headers.dest}</simple>
</recipientList>

activemq:队列:${headers.dest}

我认为最好的方法是将该名称保存到标题,如本例所示:

然后在端点中使用表达式,如下所示:

<recipientList>
    <simple>activemq:queue:${headers.dest}</simple>
</recipientList>

activemq:队列:${headers.dest}

我认为最好的方法是将该名称保存到标题,如本例所示:

然后在端点中使用表达式,如下所示:

<recipientList>
    <simple>activemq:queue:${headers.dest}</simple>
</recipientList>

activemq:队列:${headers.dest}

Hi,我尝试了您的建议,但它发送到了错误的队列(它将内容发送到名为${header.dest}的队列),这是因为简单表达式在activemq端点中不起作用。您必须使用recipientList。我编辑了我的答案-现在应该可以了。您好,我尝试了您的建议,但它发送到了错误的队列(它将内容发送到名为${header.dest}的队列),这是因为简单表达式在activemq端点中不起作用。您必须使用recipientList。我编辑了我的答案-现在应该可以了。您好,我尝试了您的建议,但它发送到了错误的队列(它将内容发送到名为${header.dest}的队列),这是因为简单表达式在activemq端点中不起作用。您必须使用recipientList。我编辑了我的答案-现在应该可以了。您好,我尝试了您的建议,但它发送到了错误的队列(它将内容发送到名为${header.dest}的队列),这是因为简单表达式在activemq端点中不起作用。您必须使用recipientList。我编辑了我的答案-现在应该可以正常工作了。如果需要动态端点URI,请查看recipientList。查看此常见问题解答:如果需要动态端点URI,请查看recipientList。查看此常见问题解答:如果需要动态端点URI,请查看recipientList。查看此常见问题解答:如果需要动态端点URI,请查看recipientList端点URI。请参阅此常见问题解答: