RabbitMq:使用PHP AMQP在Exchange上设置AMQP_AUTODELETE标志

时间:2013-08-01 15:55:43

标签: php rabbitmq amqp php-amqp

我正在尝试使用AMQPExchange :: setFlags(int $ flags)在我的交换机上设置AMQP_AUTODELETE标志

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 个答案:

答案 0 :(得分:1)

AMQP_AUTODELETE标志只能用于AMQPQueue。 有关有效标记,请参阅the AMQPExchange::setFlags manual page

答案 1 :(得分:0)

我遇到了同样的问题。无法使用当前的php amqp模块(v1.2.0)创建具有自动删除功能的交换。

dev-master(1.4.0-dev)中有recent commit添加此功能。不过,我无法使其发挥作用。我看到交换对象具有auto_delete属性,但是当它被声明时,在rabbitmq(v3.1.3)中,它将auto_delete标志设置为false。

现在我将创建cronjob,它将删除没有相关队列的交换。

这是您的问题以及协作请求的答案。欢迎任何有关此主题的意见。