JMS автосопротивление и автоматическое восстановление

Я пытаюсь решить следующую задачу:

  1. У меня есть 1 выходная очередь и 1 входная очередь и база данных.
  2. Если очередь вывода недоступна, мне нужно сохранить все входящие сообщения в БД.
  3. Как только выходная очередь становится доступной, входная очередь (или посредник) должна начать отправлять все сообщения из БД и одновременно удалять эти сообщения из БД. Все должно быть сделано автоматически, а не вручную.

Есть ли у брокеров сообщений (ActiveMQ, RabbitMQ) решение "из коробки" или нет?

1 ответ

Решение

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

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

Другие вопросы по тегам