Я пытаюсь использовать RabbitMQ в более нетрадиционном способе (хотя в данный момент я могу выбрать любую другую реализацию очереди сообщений, если это необходимо)управление замком на masssage в кроличьих квадратных метрах
мое приложение работает как это, я есть одна очередь (у меня может быть больше, если необходимо), которые клиенты-клиенты получают N сообщений асинхронными. После того, как они выполняют свою работу, я отправляю результаты от клиента в db.
У меня две проблемы: сначала я не хочу, чтобы они работали над тем же сообщением, во-вторых, я хочу, чтобы получатель не потерял сообщения, если мой клиент закроет браузер или просто перестанет работать.
Я просмотрел документацию и увидел TTL, который был идеален для меня, если бы я мог изменить это сообщение, которое получил тайм-аут, который не будет удален, но чтобы перейти в другую очередь. не может найти способ изменить это.
Кроме того, я посмотрел на вариант подтверждения, который на первый взгляд выглядел так, как я хотел, этот механизм работает следующим образом: когда потребитель получает сообщение, он отправляет подтверждение в очередь, я думал, что могу отложить это подтверждение и отправить его когда работа выполняется на стороне клиента. моя проблема заключалась в том, что я не могу запрограммировать очередь, что если какое-либо сообщение не получило подтверждения, верните его в очередь (или в другую).
Я также нахожу, как выполнять запланированное сообщение, но это не помогло ни потому, что я не хочу, чтобы сообщение было вставлено в очередь за пять минут, я хочу, чтобы когда клиент получит сообщение, будет заблокирован в очереди в течение 5 минут, пока не будет установлено подтверждение на удаление, иначе верните его в очередь.
Могу ли я сделать временную очередь, которая позволяет мой механизм?
Если кто-то может помочь с одной из проблем или предложить другую архитектуру или вариант сделать это в другом mq, было бы здорово.
Ресурсы:
подтверждение: http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/
сообщение о замках, но его проблема была Дозатор компонента: Locks and batch fetch messages with RabbitMq
TTL: https://www.rabbitmq.com/ttl.html
Расписание сообщение: https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/