Я поразвлечься тестирования Spring Integration, так что я создал этот поток (не очень трудно, и он работает как шарм):Spring Integration протоколирование ошибок
- пользователь покупает книгу
- Некоторые преобразования выполняется
- Jms сообщение передается асинхронно
Но я имею вопрос: вы знаете, есть ли способ напечатать журнал, если исходящий канал-адаптер не? Меня не волнует, что операция публикации JMS терпит неудачу, потому что поток заканчивается, возвращая правильную загрузку книги, но показ журнала будет приятным, и я думаю, что я немного беспорядочен с обработкой ошибок Spring IO.
Заранее благодарен!
<si:channel id="purchaseBookInputChannel" />
<si:channel id="purchaseBookReplyChannel" />
<si:channel id="purchaseBookRoutingChannel" />
<si:channel id="purchaseBookJmsInputChannel" />
<si:chain id="purchaseBookChain" input-channel="purchaseBookInputChannel" output-channel="purchaseBookRoutingChannel">
<si:service-activator ref="bookServiceActivator" method="purchase" />
<si:transformer ref="bookTransformer" method="transform" />
</si:chain>
<si:recipient-list-router id="purchaseBookRouter" input-channel="purchaseBookRoutingChannel" ignore-send-failures="true" >
<si:recipient channel="purchaseBookJmsInputChannel" />
<si:recipient channel="purchaseBookReplyChannel" />
</si:recipient-list-router>
<si-jms:outbound-channel-adapter channel="purchaseBookJmsInputChannel" connection-factory="connectionFactory" destination="bookQueue">
<si-jms:request-handler-advice-chain>
<bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
<property name="onFailureExpression" value="#exception" />
<property name="failureChannel" ref="logginChannel" />
<property name="trapException" value="true" />
</bean>
</si-jms:request-handler-advice-chain>
</si-jms:outbound-channel-adapter>
<si:logging-channel-adapter id="logginChannel" level="WARN"/>
UPDATE
Привет там, и спасибо за ваше время!
Я думаю, что я делаю что-то неправильно, потому что я тестирование/ошибки-канал запроса Обработчик-совет- цепи, и это то, что я получаю:
- A JMS сообщение отправлено
- JMS происходит ошибка (мой JMS-сервер выключен, потому что я буду испытывать обработку ошибок) и отформатирован журнал ошибок печатается
- поток прерывается, и ни одна книга не закуплен
и это поведение, м ищет:
- A JMS сообщение отправлено
- JMS происходит ошибка и отформатирован журнал ошибок печатается
- Книга куплена и поток заканчивается хорошо !!
Любая подсказка о том, как печатать журнал без прерывания потока ?. Если я использую свойство ignore-send-failures="true"
, поток игнорирует ошибку JMS, но журнал ошибок не печатается.
Имейте славный день!
Я протестировал «ExpressionEvaluatingRequestHandlerAdvice» и «trapException» и отлично работает! Я обновил свой прилагаемый пример с этими изменениями, возможно, кто-то мог увлечься этим тестом. Спасибо за Вашу поддержку! –