2015-03-18 4 views
2

Я новичок в интеграции весны. В рамках одной из моих задач у меня должен быть механизм обработки ошибок по умолчанию для любого сбоя в конвейере.Spring Integration - реализация канала исключения по умолчанию

У меня есть файл въездного адаптер канала в качестве отправной точки, я был записан следующим образом:

<int-file:inbound-channel-adapter id="inbound.jms.adapter" 
    directory="C:\Test 
    channel="testChannel" 
    auto-startup="false"> 
    <int:poller fixed-rate="1000" error-channel="default-error-channel" /> 
</int-file:inbound-channel-adapter> 

канал будет использоваться в дальнейшем различных компонентах.

Вопрос в том, будет ли в случае каких-либо сбоев исключение для отказа по умолчанию для канала ошибок?

ответ

0

Мой вопрос: в случае каких-либо сбоев исключение будет исключаться из-за ошибки по умолчанию?

Нет, не полностью. Если ваш нисходящий поток равен direct (составлен только с DirectChannel), тогда да: все исключения будут выбрасываться на этот default-error-channel на этом первом адаптере канала опроса.

Но если вы передаете сообщение на разные каналы (QueueChannel, ExecutorChannel), то исключение будет обрабатываться через их механизм. В большинстве случаев по умолчанию используется значение errorChannel.

Дополнительная информация here.

Кроме того, существует ExpressionEvaluatingRequestHandlerAdvice с функцией обработки исключений для конкретной конечной точки.

+0

Спасибо Артем. Правильно ли я полагаю, что при активации активатором erorChannel будет предоставлен глобальный блок catch любого исключения, которое происходит в приложении. –

+0

Правда. Но, как я сказал: он будет работать, пока вы не передадите сообщение на непрямой канал. Он работает здесь, как 'try ... catch' в чистой Java: если вы запустите новый поток в этом блоке, его исключения будут недоступны для вашего root' try ... catch' –

+0

Ok. Спасибо. Если я передаю сообщение непрямым каналам, тогда мне нужно будет явно указать канал ошибок. Я прав? У меня есть что-то вроде th –

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