Java 是否可以在process()中启动camel端点
正如标题所说:是否可以在路由(-builder)的流程函数中启动camel端点?我是apache camel的新手,但已经做了一些项目 情况如下: 我正在使用ApacheCamel和西门子Teamcenter RAC来执行一个SavedQuery。结果是一个ModelObject[],其中包含找到的元素 对于这些元素中的每一个,我现在需要启动另一个端点,执行第二个搜索查询。我想到了这样的事情:Java 是否可以在process()中启动camel端点,java,apache,apache-camel,Java,Apache,Apache Camel,正如标题所说:是否可以在路由(-builder)的流程函数中启动camel端点?我是apache camel的新手,但已经做了一些项目 情况如下: 我正在使用ApacheCamel和西门子Teamcenter RAC来执行一个SavedQuery。结果是一个ModelObject[],其中包含找到的元素 对于这些元素中的每一个,我现在需要启动另一个端点,执行第二个搜索查询。我想到了这样的事情: //within .process() for (ModelObject ob : arrModelO
//within .process()
for (ModelObject ob : arrModelObjects) {
// something like: .to("direct:searchnew")
}
但我不能在处理器中引用外部函数“.to()”。是否有变通方法或解决方案,或者我的想法是错误的
class MyProcessor implements Processor{
private ProducerTemplate producerTemplate;
@Override
public void process(Exchange exchange) throws Exception {
for (ModelObject ob : arrModelObjects) {
producerTemplate.send("direct:searchnew",exchange);
}}
}
将producerTemplate添加到上下文
将producerTemplate添加到CamelContext。正如@Rathna提到的,您可以使用producerTemplate 您可以根据您的上下文创建新的生产者模板,您可以从exchange获得该模板,如下所示:
public class MyProcessor implements Processor{
@Override
public void process(Exchange exchange) throws Exception {
ProducerTemplate producerTemplate = exchange.getContext().createProducerTemplate();
ModelObject[] arrModelObjects = (ModelObject[]) exchange.getIn().getBody();
for (ModelObject ob : arrModelObjects) {
producerTemplate.sendBody("direct:someEndpoint", ob);
}
}
}正如@Rathna提到的,您可以使用producerTemplate 您可以根据您的上下文创建新的生产者模板,您可以从exchange获得该模板,如下所示:
public class MyProcessor implements Processor{
@Override
public void process(Exchange exchange) throws Exception {
ProducerTemplate producerTemplate = exchange.getContext().createProducerTemplate();
ModelObject[] arrModelObjects = (ModelObject[]) exchange.getIn().getBody();
for (ModelObject ob : arrModelObjects) {
producerTemplate.sendBody("direct:someEndpoint", ob);
}
}
}如果需要进行第二次查询并将结果包含在ModelObjecta中,请查看ProducerTemplater。需要将每个对象“发送”到端点,因此我首先查看producer模板。Content enricher似乎是一种错误的方法。如果需要进行第二次查询并将结果包含在ModelObjecta中,请查看ProducerTemplater。需要将每个对象“发送”到端点,因此我将首先查看producer模板。Content enricher似乎是错误的方法将其添加到您的配置中,您在camel上下文中定义了路由生成器i'n不使用camel上下文,我有一个java主类,我在其中运行org.apache.camel.main.main类将其添加到您的配置中,如果您在camel上下文中定义了路由生成器,而不是使用camel上下文,那么我有一个java主类,在其中运行org.apache.camel.main.main类