Запланированные повторные попытки для связанного сообщения JMS

StackOverflow https://stackoverflow.com/questions/3782766

Вопрос

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

Существует сообщение A и связанное сообщение B следует за этим со ссылкой на нее. В некоторых странных произошенных случаях B поступает до A. Теперь в этом случае должно быть 3 года после некоторых «х» равных промежуток времени, чтобы увидеть, приехал ли A и Затем сохраняются ассоциации.

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

Можем ли мы использовать кварцевый планировщик заданий для этой цели, чтобы избежать обращения с многопотативными проблемами и иметь постоянный магазин в любом из следующих 2 способов,

  1. Запланируйте работу в кварце в течение 3 раза и отслеживайте флаг в JOBDATAMAP, чтобы проверить, удается ли предыдущие повторные попытки, а затем вернуться, не делая ничего

ИЛИ

2.Нажмите работу, чтобы повторить попытку повторить попытку, а затем, если попытка повторной попытки не удается, одинаковая задача через несколько секунд.

Можно ли использовать кварце только для повторяющихся рабочих мест, и не иметь некоторой государственной информации о промежутках по работе или есть ли другой лучший способ сделать это.

Это было полезно?

Решение

Вы должны настроить свой провайдер JMS, чтобы установить задержку повторной обработки в очереди вашего сообщения. В вашем коде вы звоните context.setRollbackOnly Чтобы прервать сообщение, которое не передает предварительные проверки.

В этом случае сценарий выполнения кода становится:

  • Потребляйте «B», проверьте предварительное условие и обнаружить отсутствие
  • Открутите транзакцию и сообщение возвращается в очередь, он будет повторно доставляется после настроенной задержки
  • потреблять и обрабатывать следующее сообщение «A»
  • После задержки MDB потребляет и обрабатывают снова «B» с успехом
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top