0

私は現在、basic_get を使用して rabbitMQ からメッセージを取得した後、受信したメッセージに対して ack を自動的に送信せずにいくつかのロジックを実装しています。

ここのチュートリアル(メッセージ確認セクション) によると、メッセージ自体内でチャネル参照が見つからず、上記のリンクに記載されているように ack を送信できません。

$msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);

これは、私のメッセージ配信情報配列にそのようなチャネルがないためです。
それが欠けているのはどうしてだろうか。

編集:基本的なgetのコードスニペット

  $msg = $this->channel->basic_get($this->queueName, false);  

これが私のメッセージの var_dump です:(黄色の部分)
ampq メッセージl

4

2 に答える 2

1

get-okの戻り値であるAMQP 仕様によると、で始まるコンシューマーにメッセージが到着したときに使用される でbasic-get起こることとは対照的に、 にはチャネルが含まれません。basic-deliverbasic-consume

したがって、ライブラリの動作は正しいです。

https://github.com/videlvaro/php-amqplib/blob/master/PhpAmqpLib/Channel/AMQPChannel.php#L1022を参照してください。

https://github.com/videlvaro/php-amqplib/blob/master/PhpAmqpLib/Channel/AMQPChannel.php#L956

于 2015-03-09T17:22:23.833 に答える