我正在尝试实现某种代理作为我的数据流的一部分,我想在我的入站网关上接收一个 http 请求并通过出站网关传递它。我想保留所有查询字符串参数。我的网关配置是:
<int:channel id="searchRequestChannel" />
<int:channel id="searchReplyChannel" />
<int-http:inbound-gateway id="searchRequestInboundGateway"
supported-methods="GET"
request-channel="searchRequestChannel"
reply-channel="searchReplyChannel"
path="/services/normalization"
reply-timeout="50000"
/>
<int-http:outbound-gateway id="searchServiceGateway"
http-method="GET"
request-channel="searchRequestChannel"
url="http://localhost:8080/query"
extract-request-payload="false"
expected-response-type="java.lang.String"
reply-timeout="50000"
charset="UTF-8"
/>
我预计它将按以下方式工作:
客户端向入站网关/services/normalization发送请求:
GET /services/normalization q=cat&exclude=black
入站网关接收请求并通过searchRequestChannel将其发送到出站网关。
出站网关将整个请求发送到外部服务:
GET /查询 q=cat&exclude=black
但实际上,出站网关发送不包含任何查询参数的空请求:
GET /query
所以我的问题是,通过出站网关发送在入站网关上接受的 http 请求的最简单方法是什么。换句话说,如何通过 spring 集成工具实现简单的代理?