Что такое «режим доставки» в AMQP? - PullRequest
47 голосов
/ 26 февраля 2010

Я понимаю, что доступны 2 варианта:

  • "непостоянные"
  • "Persistent"

Но что это на самом деле означает?

«Непостоянный» как в: фабрика AMQP попытается доставить сообщение, если нет потребителей, сообщение будет отброшено?

«Постоянно» как в: AMQP будет повторять сообщение, пока потребитель не примет его ??

Ответы [ 2 ]

38 голосов
/ 01 марта 2010

Сообщения, помеченные как «постоянные» и доставляемые в «длительные» очереди, будут записываться на диск. Долговечные очереди восстанавливаются в случае сбоя вместе со всеми постоянными сообщениями, которые они хранили до сбоя.

14 голосов
/ 23 августа 2012

delivery_mode в AMQP определяет, будет ли сообщение сохраняться на диске после перезапуска брокера. Вы можете пометить сообщения как постоянные - установив delivery_mode property = 2 при публикации сообщения например в PHP (расширение PECL AMQP):

$exchange->publish($text, $routingKey, null, array('delivery_mode' => 2));

Вам также необходимо объявить очередь длительной (или она будет отброшена после остановки брокера).

$queue->setFlags(AMQP_DURABLE);
...