В чем разница между немедленными и обязательными флагами в amqp/rabbitmq?

Я имею в виду документацию rabbitmq AMQP-0.9 < /a> для метода basic_publish. Это относится к двум флагам для сообщения: - 1) Немедленно, 2) Обязательно.

обязательный

Этот флаг указывает серверу, как реагировать, если сообщение не может быть направлено в очередь. Если этот флаг установлен, сервер вернет немаршрутизируемое сообщение с методом Return. Если этот флаг равен нулю, сервер молча отбрасывает сообщение.

Сервер ДОЛЖЕН реализовать обязательный флаг.

Для немедленного: -

немедленный

Этот флаг указывает серверу, как реагировать, если сообщение не может быть немедленно перенаправлено потребителю очереди. Если этот флаг установлен, сервер вернет недоставленное сообщение с методом Return. Если этот флаг равен нулю, сервер поставит сообщение в очередь, но без гарантии, что оно когда-либо будет использовано.

The server SHOULD implement the immediate flag.

В чем разница между обоими флагами, так как оба выглядят одинаково? Более того, в чем разница между недоставленным и немаршрутизированным сообщением с точки зрения сервера rabbitmq?


person Mangu Singh Rajpurohit    schedule 13.04.2018    source источник


Ответы (1)


На основании предоставленных вами выдержек из документации:

обязательное: сообщение, которое отправляется на биржу без соответствующей привязки к месту назначения (в основном очередь, вам необходимо дополнительно проверить, что произойдет в случае привязок между обменом) будет возвращен издателю, поэтому издатель будет знать, что брокер не может направить сообщение

немедленно: здесь еще один шаг вперед: издатель уведомляется, если для сообщения нет доступного потребителя.

Итак, если, например, вы отправляете сообщение на биржу, которая может направить его в очередь, но в настоящее время в очереди нет потребителя:

  • с обязательной точки зрения все в порядке (ваше сообщение было направлено в очередь. оно не "потеряно"
  • с непосредственной точки зрения это не нормально, потому что на момент публикации у сообщения нет потребителя.
person Olivier    schedule 13.04.2018