2016-04-14 3 views
1

Я новичок в интеграции Spring. Ниже приведен мой код.Spring Integration HTTP Outbound Gateway Retry on Exception

<int-jms:message-driven-channel-adapter 
    id="testListenter" destination-name="testQueue" 
    channel="setTestHeader" concurrent-consumers="2" 
    max-concurrent-consumers="5" connection-factory="amqConnectionFactory" /> 

<http:outbound-gateway request-channel="httpChannel" 
    url="http://APITesting/testHttp/v1.0" http-method="POST" 
    header-mapper="headerMapper" reply-channel="response.header.enricher" 
    error-handler="testErrorHandler" 
    expected-response-type="com.test.domain.response.responseObject" message-converters="messageConverters" /> 

<util:list id="messageConverters"> 
    <bean id="formHttpMessageConverter" class="org.springframework.http.converter.FormHttpMessageConverter"/> 
    <bean id ="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> 
</util:list> 

Я не вижу никаких исключений в своих журналах.

Теперь я ожидаю, что ответ будет JSON. Но если ответ не JSON и имеет тип raw, исходящий шлюз уволен по крайней мере 7 раз автоматически.

Любая помощь, почему API запускается в случае таких сценариев?

ответ

0

Ну, так как у вас нет RequestHandlerRetryAdvice, то для этого <http:outbound-gateway>, что «atleast 7 раз автоматически» полностью зависит от вызывающего абонента. Например, JMS Message Channel Channel Adapter делает повторную доставку одного и того же сообщения, если есть какое-то исключение.

То же самое с AMQP.

Итак, «что в вашем кошельке?»

Пожалуйста, поделитесь DEBUG журналами для категории org.springframework.integration, когда вы наблюдаете поведение повтора.

+0

Привет, Артем, да, вы правы. Мой вызывающий абонент - это JMS Message Driven Channel Adapter, и я не настроил канал ошибок. но я понял, что обработчик ошибок, который я настроил для исходящего шлюза, должен был поймать исключение. Пожалуйста, поправьте меня, если я ошибаюсь.

+0

Вы должны переместить код на свой вопрос с помощью функции 'edit'. И нет, «error-channel» для предотвращения повторной доставки должен быть объявлен в «JMS Message Driven Channel Adapter». –

+0

Благодарим за предложение. Я добавил свой код к вопросу. –

Смежные вопросы