我有http:outbound-gateway
如下:
<int:channel id="fromEmployeeChannel" />
<int-http:outbound-gateway
url="localhost:8080/api/employees" request-channel="fromEmployeeChannel"
http-method="POST" expected-response-type="java.lang.String" reply-channel="employeeAdded" >
</int-http:outbound-gateway>
如何处理不同的HTTP响应状态?如果我收到404 Not Found这样的错误,如何处理错误?
答案 0 :(得分:0)
HttpRequestExecutingMessageHandler
将response status
填充到replyMessage
标题:
replyBuilder.setHeader(org.springframework.integration.http.HttpHeaders.STATUS_CODE, httpResponse.getStatusCode());
因此,您可以在<header-value-router>
下游<int-http:outbound-gateway>
向不同的渠道发送不同逻辑的响应。
404
和类似内容由DefaultResponseErrorHandler
中的RestTemplate
(默认值)处理,并从那里被抛出为异常:HttpClientErrorException
或HttpServerErrorException
,相应地。或者甚至喜欢RestClientException("Unknown status code [" + statusCode + "]")
。
首先,这个异常被抛到上游,例如在轮询或消息驱动的端点上<gateway>
或error-channel
。
但是从另一方面来说,你可以在<int-http:outbound-gateway>
上完全按照它们做一些逻辑。为此,它有<int-http:request-handler-advice-chain>
并且内置ExpressionEvaluatingRequestHandlerAdvice
能够执行某些操作onFailureExpression
:http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/messaging-endpoints-chapter.html#message-handler-advice-chain