Поля immediate
и mandatory
являются частью спецификации AMQP и также рассматриваются в FAQ для RabbitMQ, чтобы пояснить, как его реализации интерпретировали их значение:
Обязательно
Этот флаг сообщает серверу, как
реагировать, если сообщение не может быть перенаправлено на
очередь. В частности, если обязательным является
установить и после запуска привязок
сообщение было помещено в нулевые очереди, то
сообщение возвращается отправителю
(с базовым возвратом). Если обязательно
не был установлен под тем же
обстоятельства бы сервер
молча отбросить сообщение.
Или, по моим словам, "Поместите это сообщение хотя бы в одну очередь. Если не можете, отправьте его мне."
Немедленное
Для сообщения, опубликованного с немедленным
установить, если соответствующая очередь готова
потребители тогда один из них будет иметь
сообщение направлено на него. Если повезет
потребитель падает до подтверждения
квитанция сообщение будет поставлено в очередь
и / или доставлены другим потребителям на
эта очередь (если нет сбоя
сообщение подтверждено и все готово
как обычно). Если, однако,
соответствующая очередь готова к нулю
потребители сообщения не будут
поставлен в очередь на последующую доставку
из этой очереди. Только если все
соответствующие очереди не готовы
потребители, что сообщение возвращается
отправителю (через basic.return).
Или, по моим словам, "Если к моей очереди подключен хотя бы один потребитель, который может принять доставку сообщения прямо сейчас, немедленно доставьте ему это сообщение. Если нет подключенных потребителей, то нет Суть в том, что мое послание будет использовано позже, и они его никогда не увидят. Они откладывают, они проигрывают. "