【问题标题】:Camel Split Parallel Processing aggregate messages [closed]骆驼拆分并行处理聚合消息[关闭]
【发布时间】:2018-07-26 11:49:16
【问题描述】:

可能看起来像一个微不足道的问题,但不幸的是无法让它工作

这是代码

from("direct:START")
.process( (ex) -> {
   List<Integer> pages = IntStream.range(1,5).boxed().collect(Collectors.toList());
   ex.getOut().setBody( pages );
 })
.split(body())
.parallelProcessing()
.to("http://someurl?page=${body}");
 --> Get the collective body here

如何完成这项工作!

【问题讨论】:

  • 您需要提供更多信息才能让人们帮助您:1)您希望代码做什么? 2)当前代码做了什么?
  • @quant_dev 较小的问题并不意味着它的信息很少。这个问题很准确,有人已经解决了。
  • 这个问题被搁置了。行数不决定质量。这个问题在实际中非常清楚,并且直截了当,没有多余的故事。无论如何我得到了答案。

标签: rest concurrency split parallel-processing apache-camel


【解决方案1】:

您可以使用AggregatorcompletionSize 表达式来聚合拆分的消息。

.split(body()).parallelProcessing().to("log:splitted_body_is_here")
.aggregate(constant(true), AggregationStrategies.groupedBody())
    .completionSize(exchangeProperty(Exchange.SPLIT_SIZE))
.to("log:aggregated_body_is_here")

如果您使用旧版本的骆驼 (2.20.x) AggregationStrategies.groupedBody() 将不可用。您可以使用其他方法。我使用了一个简单的自定义方法来执行我的聚合。

代码更改为

.split(body()).parallelProcessing().to("log:splitted_body_is_here")
.aggregate(constant(true), (in,out) ->{
                if( in == null ){
                    return out;
                }
                else{
                    String body = in.getIn().getBody(String.class);
                    body = body + "," + out.getIn().getBody( String.class );
                    in.getOut().setBody( body );
                    return in;
                }
            })
    .completionSize(exchangeProperty(Exchange.SPLIT_SIZE))
.to("log:aggregated_body_is_here")

上面的代码,只是假设正文是一个字符串/JSON,并用逗号附加它。

看起来,您想使用to 中的动态 url 调用端点。不支持,请改用toD

【讨论】:

  • 看看 brett 的大脑 :) 看准了!但我没有看到名为 AggregationStrategies.groupedBody() 的 Class.method。使用工作代码进行编辑。
  • 感谢编辑,但AggregationStrategies.groupedBody() 未被删除。它存在于current versions。也许您指的是旧版本,它被命名为AggregationStrategies.batch()(重命名为this commit),但功能相同。或者您缺少哪个版本?
  • 天哪!我正在使用旧版本。 2.20.x :( 将立即升级。感谢您的指点。也编辑了答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
相关资源
最近更新 更多