我必须为以下步骤编写Spring Integration流程:
((1)从目录读取json文件
((2)转换为Java对象并添加标头
((3)转换为JSON
((4)发布至终点:POST http://127.0.0.1:8081/v1/userValidation
((5)提取对名为'UserValidationResponse'的Java对象的响应。该响应具有一个称为orderID的字段,该字段将在步骤7中使用。
(6)将输出写入到名为'userValidationPostOutputWriterChannel'的通道。此通道将记录Http状态。
(7)在端点上进行PUT:PUThttp://127.0.0.1:8081/v1/userValidation/{在步骤5中提取的orderID} /取消。
(8)将输出写入名为“ userValidationPostCancelOutputWriterChannel”的通道。此通道将记录Http状态。
我需要什么:
如何动态构建URLhttp://127.0.0.1:8081/v1/userValidation/{orderID} /取消?] >>
我在网上查询了一下,发现我必须使用uri参数。
您能以编程方式给我一个例子吗?
我只能使用config XML查找示例,并且我的代码中没有config XML。
样本代码:
@Bean public IntegrationFlow placeUserRequest(RestTemplate restTemplate) { private String AUTHORIZATION = "USER"; return IntegrationFlows.from(sourceDirectory(), configurer -> configurer.poller(Pollers.fixedDelay(10000))) .transform(Transformers.fromJson(UserRequest.class)) .enrichHeaders(h -> h.header("Content-Type", "application/json")) .transform(Transformers.toJson()) .handle(Http.outboundGateway("http://127.0.0.1:8081/v1/userValidation", restTemplate) .httpMethod(HttpMethod.POST) .mappedRequestHeaders("auth*", "TraceabilityID", AUTHORIZATION) .charset("UTF-8") .expectedResponseType(UserValidationResponse.class)) .wireTap(flow -> flow.channel("userValidationPostOutputWriterChannel")) .handle(Http.outboundGateway("http://127.0.0.1:8081/v1/userValidation/" + parser.parseExpression("payload.getOrderID()") + "/cancel", restTemplate) .httpMethod(HttpMethod.PUT) .mappedRequestHeaders("auth*", "TraceabilityID", AUTHORIZATION) .charset("UTF-8").expectedResponseType(Map.class)) .wireTap(flow -> flow.channel("userValidationPostCancelOutputWriterChannel")) .get(); }
来自POST http://127.0.0.1:8081/v1/userValidation的示例响应:
{ "status": "CREATED", "orderID": "78e323f7-d3f9-11e9-a71a-035a2a38a4e0", "userData" : { "userFName": "John", "userLName": "Smith", "userLocation": "Florida" }, "userAccess": "USER" }
下一次执行应为PUT http://127.0.0.1:8081/v1/userValidation/78e323f7-d3f9-11e9-a71a-035a2a38a4e0/cancel。
我必须为以下步骤编写Spring Integration流程:(1)从目录读取json文件(2)转换为Java对象并添加标头(3)转换为JSON(4)发布到结束点:POST .. 。
完全可以这样配置HTTP出站网关上的URI: