У меня есть следующие настройки конфигурации для вызова службы 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 для этого.Посоветовать нужно.