RabbitMq: установка флага AMQP_AUTODELETE на Exchange с помощью 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.

Кто-нибудь нашел решение для этого? Спасибо!!!


person Scherbius.com    schedule 01.08.2013    source источник


Ответы (2)


Флаг AMQP_AUTODELETE можно использовать только для AMQPQueue. См. страницу руководства AMQPExchange::setFlags для допустимых флагов.

person klkvsk    schedule 01.08.2013
comment
спасибо, похоже, я пропустил, что setFlag в настоящее время рассматривает только 2 типа флагов... - person Scherbius.com; 01.08.2013
comment
Эта ссылка не работает. Попробуйте AMQPExchange::setFlags() и AMQPQueue::setFlags() - person vladkras; 28.06.2016

У меня такая же проблема. Обмены с автоудалением не могут быть созданы с использованием текущего модуля php amqp (v1.2.0).

В dev-master (1.4.0-dev) есть недавняя фиксация. то есть добавляет эту функциональность. Тем не менее, я не смог заставить его работать. Я вижу, что объект обмена имеет атрибут auto_delete, но когда он объявлен, в rabbitmq (v3.1.3) для него устанавливается флаг auto_delete в значение false.

Сейчас я создам cronjob, который удалит обмены, у которых нет соответствующей очереди.

Это ответ на ваш вопрос, а также запрос на сотрудничество. Любой вклад по этой теме приветствуется.

person wormhit    schedule 19.03.2014