【发布时间】:2018-05-11 18:16:49
【问题描述】:
我有以下用于调用 REST 服务的配置设置。
@Bean
public MessageChannel requestChannel() {
SubscribableChannel requestChannel= new DirectChannel();
return requestChannel;
}
@Bean
public MessageChannel responseChannel() {
SubscribableChannel responseChannel = new DirectChannel();
return responseChannel;
}
@Bean
@ServiceActivator(inputChannel = "requestChannel")
public MessageHandler httResponseMessageHandler(MessageChannel responseChannel,
HeaderMapper<HttpHeaders> headerMapper, RequestHandlerRetryAdvice retryAdvice) {
List<Advice> list = new ArrayList<>();
list.add(retryAdvice);
HttpRequestExecutingMessageHandler handler = new HttpRequestExecutingMessageHandler("https://localhost:8080/myrest/service/");
handler.setHttpMethod(HttpMethod.POST);
handler.setHeaderMapper(headerMapper);
handler.setOutputChannel(responseChannel);
handler.setExpectedResponseType(RtpResponse.class);
handler.setAdviceChain(list);
return handler;
}
下面是网关和服务激活器发送请求和获取响应的配置。
@Override
@ServiceActivator(inputChannel="responseChannel")
public void receiveResponse(Message<RtpResponse> message) {
LOGGER.info("Message: " + message);
LOGGER.info("Message: " + message.getPayload());
LOGGER.info(message.getClass().getCanonicalName());
}
@Override
@Gateway(requestChannel = "requestChannel")
public void sendRequest(RtpRequestBody requestBody) {
requestChannel
.send(
MessageBuilder.withPayload(requestBody)
.setHeader("Accept","application/json")
.setHeader(MessageHeaders.CONTENT_TYPE,"application/json")
.setHeader(MessageHeaders.ERROR_CHANNEL,errorChannel)
.build()
);
}
我被困在如何为此流程编写 Junit 上。我不确定是否需要将此流程重组为 IntegrationFlow,这将有助于为此编写 Junit 测试。需要建议。
【问题讨论】:
标签: junit spring-integration spring-test