Стратегия обработки ошибок Pub-Sub - PullRequest
0 голосов
/ 18 июля 2011

Вот мои настройки каналов:

  1. Очередь, поддерживаемая хранилищем сообщений jdbc
  2. Мост, соединяющий очередь с паб-подканалом
  3. Поллер, настроенный на канале pub-sub, является транзакционным

Теперь, когда возникает исключение в любом из подписчиков, транзакция откатывается и сообщение повторяется навсегда. Сообщение снова обрабатывается всеми подписчиками. Если это постоянное исключение хотя бы для одного подписчика, сообщение не обрабатывается ни одним из других подписчиков.

Какова лучшая стратегия обработки исключений здесь?
Я предпочитаю обработку исключений на подписчике, т. Е. Только отказавший подписчик будет повторять попытку, другие подписчики будут обрабатывать сообщение и двигаться дальше.

Как это можно реализовать в весенней интеграции?

Подробнее здесь ..

  1. Если опросер сделан транзакционным и сообщение не может быть обработано хотя бы у одного из подписчиков, то сообщение откатывается в хранилище сообщений и повторяется. Я также настроил хранилище сообщений jdbc для errorChannel. Каждый раз, когда обработка сообщения заканчивается неудачей, сообщение возвращается к исходному хранилищу сообщений, и в хранилище сообщений канала ошибок имеется одна запись для каждой повторной попытки.

  2. Если устройство опроса не является транзакционным, и сообщение не обрабатывается в первом подписчике, то сообщение помещается в канал ошибок, но второй подписчик никогда не получает сообщение.

Похоже, что что-то в корне не так .. Это с моей конфигурацией?

1 Ответ

0 голосов
/ 21 июля 2011

http://forum.springsource.org/archive/index.php/t-75000.htmlОбсуждение в вышеупомянутой ветке объясняет плюсы и минусы фреймворка в отношении pubsub impl.

Мы выбрали следующий подход: 1. Поллеры будут транзакционными, то есть все подписчики будут обрабатывать сообщение успешно или ни один из них.Сообщение будет повторено для всех подчиненных до тех пор, пока все они не будут успешно завершены.

  1. Ответственность за обработку ошибок несет абонент

  2. Только системные исключения будут отображатьсяВернуться к опросу.Бизнес-исключения будут обрабатываться подписчиком, и сообщение будет помещено в какой-либо канал ошибок вручную.

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