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.

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

Author: Dmitriy Naumov, 2013-08-01

2 answers

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

 1
Author: klkvsk, 2013-08-01 17:23:24

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

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

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

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

 0
Author: wormhit, 2014-03-19 11:23:40