当前位置: 首页 > 知识库问答 >
问题:

Camel route是从java激活的——如何从最后一条路由获得响应

艾跃
2023-03-14

从我使用camel的spring boot中,我想知道当完成camel路由时(我的示例中的最后一条路由),是否有可能从camel路由获得响应。它开始像这样使用ProducerTemplate:

@Component
public class CamelSender {

@Produce(uri = "direct:start")
private ProducerTemplate template;

public void callRoute(List<String> list) throws ExecutionException, InterruptedException {
    template.sendBodyAndHeader("direct:start", list, "orderId", "123456677"
    );
}
}

//骆驼路线

from("direct:start")
    .log("Split -> Process order ${body}")
    .split().body().to("direct:actionQueue") 
    .end();

 from("direct:actionQueue")
    .bean(ValidateOrders.class)
    .log("Sending to join queue")
    .to("direct:joinQueue");

 from("direct:joinQueue").aggregate(new MyOrderAggregationStrategy())
    .header("orderId")
    .completionTimeout(1000L)
    .process(new Processor() {
        @Override
        public void process(Exchange exchange) throws Exception {
                    List<String> orders =   (  (List<String>)  exchange.getIn().getBody());
                    String collect = orders.stream().map(order -> order.toString()).collect(Collectors.joining(","));
                    exchange.getIn().setBody( "Collected validations: "+collect);
                }
            })
            .log("${body}");

如何将包含收集的验证(字符串)的正文返回给我的JavaBean?

共有1个答案

王杰
2023-03-14

使用复合消息处理器EIP,而不是拆分聚合。因为后者是两个独立的进程,聚合器的输出不能作为响应发送回拆分器。前者可以通过使用拆分器中的内置聚合策略来实现。

您可以在Camel EIP上找到示例和更多详细信息-请参阅拆分器仅示例:http://camel.apache.org/composed-message-processor.html

 类似资料:
  • 我在Codeigniter中的会话比我在“配置/constants.php”文件中指定的时间更短。我将这个常数设置为3600秒(一小时),但有时我会在5或10分钟内被踢出。这发生在常规的MVC调用中,不涉及ajax。 我正在尝试访问CI会话中的last_activity值,但这是CI文档当前的状态:“last_activity:取决于存储,没有直接的方法。抱歉!” 那么,我如何访问该值呢?有什么想

  • 我卡住了。我不能在我的请求后重定向我的用户。 有我的请求(在组件中): 有人有什么建议可以帮我找到解决办法吗?

  • 问题内容: 我正在使用mysql并遇到一些问题。我想检索插入的最后一行。 <<以下是详细>> 以下是我创建表格的方式。 我在其中插入了四个值,如下所示 当我执行时,我得到如下输出 当我尝试下面的代码时, 我得到如下输出。 但是,当我使用代码时,出现错误 使用时,表中没有任何数据。 链接以播放数据 注意: 这里我使用4只是为了获得所需的输出。稍后我可以从查询中获取 如果我只想查看最后一条记录,请建议

  • 我怎样才能从这个循环中的最后一次迭代中获得一个字符串? numberOfFlips=2的输出为: 翻转1:头部 翻转2:尾部 等等。 我的目的是从上次迭代结果中得到“headortail”,并能够用它做些什么。有什么提示或解决办法如何达到它?

  • 问题内容: 在一个Node.js项目中,我试图从S3取回数据。 当我使用时,一切正常: 我的参数是: 如果将URL输出带到控制台并将其粘贴到Web浏览器中,它将下载所需的文件。 但是,如果我尝试使用,则会出现各种奇怪的行为。我相信我只是使用不正确。这是我尝试过的: 输出: 因此看来这工作正常。但是,当我在s 之一上设置断点时,我的IDE(NetBeans)会引发错误并拒绝显示数据值。尽管这可能只是

  • 我试图从Web读取JSON数据,但该代码返回空结果。我不确定我做错了什么。