RabbitMQ: Установка флага АВТОМАТИЧЕСКОГО УДАЛЕНИЯ AMQP при обмене с PHP AMQP
Я пытаюсь установить флаг AMQP_AUTODELETE на своем сервере обмена, используя amqpexchange::setFlags (int$flags)
Http://php.net/manual/en/amqp.constants.php http://www.php.net/manual/en/amqpexchange.setflags.php
Не работает...:(
$exchange = new \AMQPExchange(new \AMQPChannel($this->_connection));
$exchange->setName($name);
$exchange->setType(AMQP_EX_TYPE_FANOUT);
$exchange->setFlags(AMQP_AUTODELETE);
$exchange->declare();
$exchange->getflags() возвращает 0 вместо 16 (целочисленное значение AMQP_AUTODELETE).
Но это работает, когда я устанавливаю флаг AMQP_DURABLE таким же образом, $exchange->getflags() возвращает 2.
Есть ли у кого-нибудь нашли решение для этого? Спасибо!!!
2 answers
Флаг AMQP_AUTODELETE может использоваться только для amqpqueue.
См. страницу руководства AMQPExchange::setFlags
для допустимых флагов.
У меня та же проблема. Обмены с автоматическим удалением не могут быть созданы с использованием текущего модуля php amqp (v1.2.0).
В dev-master (1.4.0-dev) есть недавняя фиксация , которая добавляет эту функциональность. Тем не менее, я не смог заставить его работать. Я вижу, что объект exchange имеет атрибут auto_delete, но когда он объявлен, в rabbitmq (v3.1.3) для флага auto_delete установлено значение false.
Сейчас я создам cronjob, который удалит биржи, которые у вас нет связанной очереди.
Это ответ на ваш вопрос, а также запрос на сотрудничество. Любой вклад в эту тему приветствуется.