java - 是否可以在 process() 中启动 Camel 端点

标签 java apache apache-camel

正如标题所说:是否可以在路由(-builder)的流程函数中启动 Camel 端点?我是 apache Camel 的新手,但已经做过一些项目。

情况如下: 我将 apache Camel 与西门子 Teamcenter RAC 结合使用来执行 SavedQuery。结果是包含找到的元素的 ModelObject[]。

对于每个元素,我现在需要启动另一个端点来执行第二个搜索查询。我想到了这样的事情:

//within .process()
for (ModelObject ob : arrModelObjects) {
    // something like:  .to("direct:searchnew")
}

但我无法在处理器内引用外部函数“.to()”。是否有解决方法或解决方案,或者我的想法错误?

最佳答案

正如 @Rathna 提到的,您可以使用 ProducerTemplate。

您可以根据您的上下文创建一个新的生产者模板,您可以从交换中获取该模板,如下所示:

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);
    }
}

}

关于java - 是否可以在 process() 中启动 Camel 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43784078/

相关文章:

java - 为 Runnable 包装 Lambda 表达式以处理异常

Java 枚举 : Gathering info from another enums

java - 如何使用hibernate压缩文本和图像文件?

python - 在 apache 和 mod_python 下运行 subversion

java - 如何以编程方式调整 mod_jk 负载均衡器配置中的禁用指令?

java - Camel - REST DSL (2.14.0) 和 String bean

apache-camel - InOut是否将out消息反馈给消费者或生产者?

java - 比较对象中的 2 个以上条件

asp.net - Mod mono 通过 SSH 服务于不同的 Web 应用程序实例

java - Camel Redis 自动将字符串添加到键中