Spring 集成 http 出站网关日志记录错误



我有一个集成流程,我正在从 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 urirequestMessage

此外,此例外将委派给该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

最新更新