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() は、16 (AMQP_AUTODELETE の整数値) ではなく 0 を返します。

しかし、同じ方法で 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 に答える