我有一个集成流程,我正在从 jms 通道读取消息,并使用 http-outbound-gateway 通过 REST api 调用发送它们。现在,当我收到 5xx Http 服务器错误时,我想记录服务的 URL 以及响应消息。
我看到RestTemplate
实例已经记录了 URL 并调用了一个可以自定义实现的ResponseErrorHandler
。
我的问题是:ResponseErrorHandler
只接收ClientHttpResponse
作为参数,我无法知道该实例的 URL。我需要的是记录服务器错误,例如:"错误 URL - 响应......"
我该怎么做?我无法覆盖RestTemplate
的错误处理,并且ResponseErrorHandler
没有足够的信息。
谢谢。
好吧,我在那里看到了什么。
HttpRequestExecutingMessageHandler
( <int-http:outbound-gateway>
) 捕获所有底层异常:
catch (Exception e) {
throw new MessageHandlingException(requestMessage, "HTTP request execution failed for URI ["
+ (realUri == null ? uri : realUri.toString())
+ "]", e);
}
包括该DefaultResponseErrorHandler
的结果来自RestTemplate
.如您所见,我们在这里用于MessageHandlingException
uri
和requestMessage
。
此外,此例外将委派给该jms channel
。
为什么这对你来说还不够?
从另一边,您可以使用ExpressionEvaluatingRequestHandlerAdvice
向<int-http:outbound-gateway>
添加<request-handler-advice-chain>
,以处理该MessageHandlingException
:http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/messaging-endpoints-chapter.html#expression-advice