为每条消息配置 HttpRequestExecutingMessageHandler 的 RestTemplate

Configure RestTemplate for HttpRequestExecutingMessageHandler per message

我正在开发一个 spring 集成项目,我正在使用 HttpRequestExecutingMessageHandler class 创建出站网关。我想执行不同的 API,这些 API 使用单个网关使用不记名身份验证令牌进行身份验证。我配置了不同的 RestTemplate 来处理每种类型的消息。

我找不到如何使用此 class 配置每个消息基础的 restTemplate。这个class只在构造时接受restTemplate。 https://docs.spring.io/spring-integration/api/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.html

目前,我已经通过扩展 AbstractHttpRequestExecutingMessageHandler 创建了自定义网关 class,它是 HttpRequestExecutingMessageHandler 的 parent,并从 HttpRequestExecutingMessageHandler 复制了交换方法的内容 class。我将 restTemplate bean 名称作为消息 header 传递并在交换方法开始时解析它。

有没有更好的方法?

“使用单一网关”已经是一个错误的设计决定。

为了这些目的,您可能需要考虑使用不同的 HttpRequestExecutingMessageHandler。在您的逻辑中,您可以添加一个路由器来决定将消息发送到哪个 HTTP 出站网关。

在文档中查看更多信息:https://docs.spring.io/spring-integration/docs/5.3.2.RELEASE/reference/html/message-routing.html#messaging-routing-chapter