面对Spring集成java-dsl问题,我卡住了.这是我的流程声明代码:
@Bean
public IntegrationFlow orchestrationFlow() {
return IntegrationFlows.from(
Jms.messageDrivenChannelAdapter(queueConnectionFactory())
.destination(bookingQueue())
.outputChannel(bookingChannel()))
.<String, BookingRequest>transform(s -> {
Ticket t = new Gson().fromJson(s, Ticket.class);
return new BookingRequest()
.setMovieId(t.getMovie().getId())
.setRow(t.getSeat().getRow())
.setSeat(t.getSeat().getNumber())
.setScreenNumber(t.getScreenNumber()
);
})
// HTTP part goes here
.<BookingRequest, HttpEntity>transform(HttpEntity::new)
.handle(
Http.outboundChannelAdapter(bookingServerUrl)
.httpMethod(HttpMethod.POST)
.extractPayload(true)
.expectedResponseType(BookStatus.class)
)
// and here HTTP part ends
.handle(
Jms.outboundAdapter(responseDestinationTemplate())
)
.get();
}
Run Code Online (Sandbox Code Playgroud)
在我使用HTTP出站通道适配器之前,一切正常.我需要调用简单的RESTful接口,上面的代码做得很好.但是,以下Jms.outboundAdapter(responseDestinationTemplate())行没有任何结果,在成功调用http后没有动作执行.
如果我删除http流程部分(由评论包围) - 它的工作原理.实现了如此多的东西,几乎理解并看到了整合的美感和简洁性......这就是它.还有一个地方我被卡住了.
以下是成功REST调用后的日志:
2016-02-08 21:01:22.155 DEBUG 18209 --- [enerContainer-1] o.s.web.client.RestTemplate : POST request for "http://localhost:9052/api/book" resulted in 200 (OK)
2016-02-08 21:01:22.156 DEBUG …Run Code Online (Sandbox Code Playgroud)