#spring-integration-dsl #spring-integration-ws
#весенняя интеграция-dsl #весенняя интеграция-ws
Вопрос:
У меня есть поток интеграции spring, в котором я прослушиваю канал и вызываю SOAP WS и возвращаю ответ от WS в исходящий канал
return IntegrationFlows.from(CHANNEL)
.<byte[], String>transform(String::new)
.handle(
Ws.simpleOutboundGateway(template)
.uri(webServiceUrl )
)
.<String, byte[]>transform(String::getBytes)
. // send out the output topic
.get();
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate template = new WebServiceTemplate();
return template;
}
Я использую этот поток как часть интеграционного теста, и это работает нормально.
вопросы: если я запускаю тест с недоступным SOAP WS, я получаю следующее
Вызвано: org.springframework.ws.client.Исключение WebServiceIOException: ошибка ввода-вывода: отказано в подключении: подключитесь; вложенным исключением является java.net.ConnectException: отказано в подключении: подключитесь к org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:561) ~ [spring-ws-core-3.0.10.RELEASE.jar:na] в org.springframework.integration.ws.SimpleWebServiceOutboundGateway.doHandle(SimpleWebServiceOutboundGateway.java:120) ~ [spring-integration-ws-5.3.2.RELEASE.jar:5.3.2.RELEASE] в org.springframework.integration.ws.AbstractWebServiceOutboundGateway.handleRequestMessage(AbstractWebServiceOutboundGateway.java:224 ) ~[spring-integration-ws-5.3.2.RELEASE.jar:5.3.2.RELEASE] в org.springframework.integration.обработчик.Абстрактныйпроизведениеmessagehandler.handleMessageInternal
Как мне зафиксировать эту ошибку / ошибки в целом в этом потоке и каковы наилучшие методы обработки ошибок в ответах WS на базе soap, например: служба недоступна Ошибки запроса / ответа SOAP ext
Ответ №1:
Обычно это зависит от того, что находится выше по потоку CHANNEL
; вы можете добавить канал ошибок к тому, что запускает поток, или вы можете добавить an ExpressionEvaluatingRequestHandlerAdvice
к шлюзу. Документы здесь.
Комментарии:
1. Спасибо, Гэри, КАНАЛ в данном случае — тема Кафки. то, что я пытаюсь сделать, это захватить «исключение WebServiceIOException: ошибка ввода-вывода: отказано в подключении», исключение и создать с ним ответное сообщение и вернуть его в исходящую тему kafka. Буду признателен, если вы могли бы указать мне на пример того, что вы упомянули выше.