我是使用DSL进行弹簧集成的新手,并且遇到了困难 在http处理程序中提取有效负载,以动态构造URI。 下面的集成流程由AccountList Gateway触发,并添加了 客户ID值对通道上的调用消息 " accountListFlow.input&#34 ;.并且有效负载仅包含' 123766123' 这就是客户ID传递。
此后,消息用标题丰富,然后传递 下游到处理程序。
我要求在处理程序中提取客户ID以动态构造URI。我尝试了泛型处理程序并将有效负载转换为String,但未能说不能转换lambda对象。这里有任何帮助如何 提取有效负载作为整体,这是客户ID时 请构建URI吗?
@MessagingGateway
public interface AccountList {
@Gateway(requestChannel = "accountListFlow.input")
List<String> accountListFlow(String customerId);
}
@Bean
public IntegrationFlow accountListFlow() {
return flow -> flow.publishSubscribeChannel(s -> s.applySequence(true)
.subscribe(f -> f
.enrichHeaders(h -> h.header("X-CUST-IP-Id","145.26.54.24"))
.handle((o, map) ->
Http.outboundGateway("http://get-customers-product-holdings-gb-hbeu-v3-v3-cert.cf.wgdc-drn-01.cloud.uk/api/customers/"+(String)o+"/product-holdings?categoryCode=cc,cbs,sd")
.httpMethod(HttpMethod.GET)
.mappedRequestHeaders("X-CUST-IP-Id")
.expectedResponseType(String.class)
.extractPayload(true)).channel("aggregateAccount.input"));
}
答案 0 :(得分:0)
尝试...
.handle(Http.outboundGateway("http://get-customers-product-holdings-gb-hbeu-v3-v3-cert.cf.wgdc-drn-01.cloud.uk/api/customers/{customer}/product-holdings?categoryCode=cc,cbs,sd")
.httpMethod(HttpMethod.GET)
.mappedRequestHeaders("X-CUST-IP-Id")
.expectedResponseType(String.class)
.uriVariable("customer", "payload")
.extractPayload(true))
.channel("aggregateAccount.input"));
请注意网址中的{customer}
变量。