Есть ли способ заставить очередь RabbitMQ вести себя как стек, т.е. клиент получает последнее сообщение, которое было отправлено в очередь (LIFO), а не первое? Или, возможно, в качестве альтернативы сделать ее приоритетной очередью, используя временную метку, которую мог бы установить клиент?
RabbitMQ поддерживает очереди с приоритетами, но его приоритет - это число до 255 (рекомендуется использовать до 10).
Чего я хочу добиться, так это чтобы последние сообщения обрабатывались первыми, поскольку они содержат самую последнюю информацию об источнике. Я все еще хочу обработать старые сообщения, но в ситуациях, когда клиент не может поддерживать (или было некоторое время простоя, и клиент восстанавливается), я сначала хочу обработать самую последнюю информацию о состоянии.
Единственное решение, которое ядо сих пор было предложено использовать TTL для сообщений основной очереди и заставить их перейти в очередь недоставленных сообщений по истечении срока их действия, что также обрабатывается клиентом. Однако это не так чисто, и если для отправки нового обновления статуса источника сообщения требуется больше времени, чем TTL, последнее состояние будет помещено в очередь позади других более старых сообщений с истекшим сроком действия, которые еще предстоит обработать.
Если это невозможно сделать с помощью RabbitMQ, существует ли какая-либо другая рекомендуемая среда обмена сообщениями, которая поддерживает это требование?