Apache camel 基于文件内容的apachecamel动态路由
我正在尝试使用ApacheCamel将文件内容路由到activemq队列。我使用camel轮询特定文件夹中的xml文件,然后将其内容发送到队列。我的问题是我想根据内容值将内容发送到动态队列名称。例如: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提取信息并将其设置在一个标题
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。请参阅此常见问题解答: