我正在尝试使用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.
有没有人为此找到解决方案?感谢!!!
答案 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,它将删除没有相关队列的交换。
这是您的问题以及协作请求的答案。欢迎任何有关此主题的意见。