2

我正在尝试使用 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。

有没有人找到解决方案?谢谢!!!

4

2 回答 2

1

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

于 2013-08-01T15:59:34.023 回答
0

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

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

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

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

于 2014-03-19T11:23:40.670 回答