Сохранять и повторно доставлять сообщения после повторного подключения клиента, пока тема не будет сброшена / удалена вручную - PullRequest
0 голосов
/ 29 марта 2019

Я нахожусь в проекте, где мне нужно заменить собственного брокера сообщений и, как правило, использовать RabbitMQ.

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

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

Вариант использования - это некоторая база данных in-memory, которая заполняется при запуске системы из файла, созданного, скажем, ночью.Сообщения содержат дельты к тому, что произошло с момента создания файла.Если модуль выходит из строя и перезапускается (или добавляется новый экземпляр), он читает файл и все сообщения, чтобы воссоздать последнее состояние.

Когда создается новый файл для заполнения в памяти-db,тема сбрасывается и все сообщения отбрасываются, так как все уже есть в файле.

Есть идеи, как настроить очереди / темы для достижения чего-то подобного?Единственный хакерский способ, который я мог придумать, это как-то поиграть с подтверждением сообщений, например, просто не подтвердить доставку и т. Д. Есть какой-нибудь более чистый способ?

Я рассматриваю и других брокеров.Так что это может быть и RocketMQ, или что-то еще ...

...