2013-08-01 3 views
2

Я пытаюсь установить флаг AMQP_AUTODELETE на моем обмене с использованием AMQPExchange :: setFlags (INT $ флаги)RabbitMQ: Установка флага AMQP_AUTODELETE на бирже с PHP AMQP

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(); 

$ обменно> getFlags() возвращает 0 вместо 16 (целое значение AMQP_AUTODELETE).

Но он работает, когда я устанавливаю флаг AMQP_DURABLE одинаково, $ exchange-> getFlags() возвращает 2.

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

ответ

1

AMQP_AUTODELETE флаг может использоваться только для AMQPQueue. См. the AMQPExchange::setFlags manual page для действительных флагов.

+0

спасибо, похоже, я пропустил, что setFlag в настоящее время рассматривает только 2 типа флагов ... –

+1

Эта ссылка не работает. Попробуйте [AMQPExchange :: setFlags()] (http://php.net/manual/pl/amqpexchange.setflags.php) и [AMQPQueue :: setFlags()] (http://php.net/manual/pl/ amqpqueue.setflags.php) – vladkras

0

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

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

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

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