首页 > 解决方案 > 拆分请求 - 发送到一个或不同的端点 - 合并响应

问题描述

我正在使用 spring boot 2 和 apache camel 2.24 构建一个 api 网关,它公开 REST 端点以接收 JSON/XML 请求并执行以下操作

目前我的路线配置如下

from("direct::camel").process(preprocessor).process(httpClientProcessor).process(postprocessor);

httpClientProcessor - 这主要工作是调用下游端点并返回响应。

预处理器 - 将请求拆分为已配置的请求,在传递给 httpClientProcessor 之前将它们放入列表中。

后处理器 - 根据内容类型执行以下操作

可能存在多个请求需要发送到同一个端点或每个请求都发送到唯一端点的情况。目前我在 httpClientProcessor 中有这个逻辑。这种方法的一个问题是我只能一个接一个地调用下游端点,而不是并行调用(除非我在 httpClientProcessor 中添加线程池执行器)

我是 apache camel 的新手,因此从这个基础路由配置开始。根据阅读文档,我遇到了骆驼组件,如 split()、parallelProcessing()、多播和骆驼的聚合器组件,但我不知道如何将这些全部组合在一起以实现我的要求 -

请指教。

标签: spring-bootapache-camel

解决方案


这听起来像你应该看看Camel Split EIP

尤其

对于动态下游端点,您可以使用动态 To ( .toD(...)) 或Recipient List EIP。后者甚至可以将消息发送到多个端点或没有端点。


推荐阅读