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


RabbitMq: Setting AMQP_AUTODELETE flag on Exchange with PHP AMQP

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

http://php.net/manual/en/amqp.constants.phphttp://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。

有人找到解决方案了吗?谢谢

AMQP_AUTODELETE标志只能用于AMQPQueue。有关有效标志,请参阅AMQPExchange::setFlags手册页面。

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

dev-master(1.4.0-dev)中最近有一个提交正在添加此功能。尽管如此,我还是没能让它发挥作用。我看到exchange对象具有auto_delete属性,但当它被声明时,在rabbitmq(v3.1.3)中,它的auto/delete标志被设置为false。

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

这是您的问题和合作请求的答案。欢迎对本主题提出任何意见。