Как правильно добавить RetryAdvice в Jms.messageDriverChannelAdapter - PullRequest
1 голос
/ 23 мая 2019

Я очень новичок в Spring Integration DSL, и мне нужно добавить повторную попытку с восстановлением в существующий IntegrationFlow. Он берет данные из Jms.messageDriverChannelAdapter и отправляет их по разным каналам. Я хочу добавить RequestHandlerRetryAdvice для всего потока.

Моя идея состояла в том, чтобы добавить его в адаптер, но, похоже, он поддерживает только ErrorChannel, без Advices & Retries и тому подобного. В итоге я завернул весь поток после Jms.messageDriverChannelAdapter в .gateway с советами и .requireReply (false). Это похоже на взлом, но я не мог найти лучший способ сделать это. Есть ли лучший способ справиться с такой ситуацией?

1 Ответ

1 голос
/ 24 мая 2019

В отличие от контейнера слушателя Spring AMQP, JMS не предоставляет крючка для внедрения в него цепочки Advice, поэтому у нас действительно нет выбора и как-то обойти это.RequestHandlerRetryAdvice и .gateway() DSL - неплохая идея.Дело в том, что RequestHandlerRetryAdvice применяется только для конкретного метода handleRequestMessage() и не распространяется вниз по течению.Завершение потока в вызов шлюза из упомянутого handleRequestMessage() - путь.

Я думаю, что мы можем придумать решение для JmsMessageDrivenEndpoint, чтобы обернуть внутреннего слушателя цепочкой Advice, где один из них может быть RetryOperationsInterceptor.

Пожалуйста, поднимите вопрос о ГР, и мы подумаем, что мы можем сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...