Обработка сообщений JMS с весенней интеграцией в облачной среде - PullRequest
1 голос
/ 08 января 2020

В настоящее время я пытаюсь реорганизовать обработку сообщений JMS для работы в распределенной / облачной среде. Чтобы обеспечить лучшую повторную попытку и обработку ошибок, сообщения сначала сохраняются в базе данных с сущностью JPA, а затем читаются входящим адаптером jpa интеграции Spring. Это работает нормально, пока работает только один экземпляр моего сервиса. Однако, когда запущено несколько экземпляров, они пытаются обработать одно и то же сообщение даже после введения состояния обработки в постоянные сообщения.

Я уже пытался сохранить сообщения JMS в хранилище сообщений JDB C, однако тогда мне пришлось бы определить идентификатор группы, в соответствии с которым экземпляр мог бы выбрать сообщение, что на самом деле невозможно, так как число экземпляров - Dynami c, и я не могу назначить идентификатор группы для каждого экземпляра. Другой возможностью может быть какая-то распределенная блокировка с LockRegistry, но я не мог заставить это работать.

Есть ли у вас какие-либо подсказки / советы, как мне лучше всего реализовать следующие требования при интеграции пружин:

  • Сообщение JMS должно сохраняться
  • Любой экземпляр может выбрать сообщение и обработать его
  • Если обработка завершится неудачно, будет повторная попытка в течение x раз (также может быть повторена другим экземпляром)
  • Если экземпляр аварийно завершает работу или его убивают во время обработки сообщение не должно быть потеряно

Может быть, есть какой-нибудь компонент весеннего облака, который может быть полезен? Я рад каждому совету, в каком направлении мне следует go.

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