У меня есть маршрутизатор значения заголовка для кода состояния http на канале ответа. Я хочу перенаправить на исходную полезную нагрузку до afterSuccessChannel
, если код состояния 200
else, если какой-либо другой статус находится в заголовке. Я хочу отправить полезную нагрузку в afterFailuerChannel
. Я не уверен, что это возможно с header-value-router
, так как нет поля выражения. Возможно ли это с header-value-router
, или для этого мне нужно использовать родовой маршрутизатор?Роутер значения интеграции заголовка Spring с условием
<int:header-value-router header-name="#{T(org.springframework.integration.http.HttpHeaders).STATUS_CODE}" input-channel="ccChannel" default-output-channel="ccLogger">
<int:mapping value="200" channel="afterSuccessChannel"/>
</int:header-value-router>
Кроме того, я получаю следующее сообщение об ошибке при использовании маршрутизатора выше, даже если я получаю http_statusCode=200
на заголовок сообщения:
ErrorMessage [payload=org.springframework.messaging.MessagingException: failed to resolve channel name 'OK'; nested exception is org.springframework.messaging.core.DestinationResolutionException: failed to look up MessageChannel with name 'OK' in the BeanFactory.; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'OK' is defined, headers={timestamp=1419419964606, id=eea83b65-0e72-bcda-d8fe-6d9bb4619fb4, history=errorChannel}]
Я не знаю, почему он ищет OK канала.
Отлично. У меня есть один вопрос. Будет ли этот маршрутизатор условным? Условный в том смысле, что если значение не 'OK', будет ли оно маршрутизироваться на' default-output-channel'? – nebula
На самом деле, у меня есть условие для перехода на 'afterSuccessChannel', значение статуса равно 200/OK, иначе маршрут в' ccLogger'. – nebula
Используйте 'resolution-required =" false "' - Я обновил ответ. –