Мы используем RabbitMQ для отправки уведомлений пользователям в приложениях. Таким образом, есть потребитель, который отправит уведомление всем пользователям, использующим приложение.В RabbitMQ есть способ отправлять сообщения потребителям через определенные промежутки времени?
Когда у нас есть несколько сообщений в очереди, мы хотим, чтобы rabbitmq отправлял каждое сообщение по крайней мере на один час.
Так что, если в очереди есть 3 сообщения, каждое сообщение будет отправлено на один час.
Если в очереди нет новых сообщений и опубликовано новое сообщение, тогда в зависимости от того, когда последнее сообщение было отправлено потребителю, оно либо удерживает его, либо отправляет его.
Есть ли прямой способ сделать это?
Я не думаю, что это сработает. Флаг x-delay будет работать в отношении сообщения. Так скажите, что я публикую сообщение на 't0' с задержкой в 60 минут. Тогда этот msg будет отправлен в очередь через 60 минут. Теперь, если я опубликую 3 сообщения с той же задержкой, все эти сообщения будут отправлены через 60 минут. Я хочу, чтобы первое сообщение было отправлено во время 't0' второго во время' t0 + 60', а третье - на 't0 + 120'. Исправьте меня Если я неправильно понял ваш ответ – pratikvasa
Возможно:) Возможно, я неправильно понял ваш комментарий.Но последняя часть вашего комментария - именно то, что я имел в виду - вы публикуете сообщение nr N и устанавливаете задержку N * 60. Очевидно, для первого сообщения N = 1. – cantSleepNow
Итак, вы говорите, что при публикации сообщения установите задержку для первого msg как '0', затем для 2-го msg установите его' 60', затем '120'. Это не будет работать для этого случая. Допустим, что первое сообщение приходит в 't0', и я устанавливаю задержку на' 0'. Тогда Если второе сообщение приходит, скажем, 't0 + 100', я бы хотел, чтобы задержка была' 0', а не '60'. – pratikvasa