RabbitMQ 消息中缺少通道引用 delivery_info

RabbitMQ missing channel reference in message delivery_info

我目前正在使用 basic_get 从 rabbitMQ 获取消息后实现一些逻辑,而不是自动发送收到消息的确认。

根据教程here(消息确认部分),我无法在消息本身中找到频道引用,也无法像上面提到的那样发送确认link:

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

那是因为在我的消息传递信息数组中没有这样的频道。
我想知道它怎么会丢失。

编辑: 基本获取代码片段

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

这是我的留言var_dump:(黄色部分)
l

当使用 basic_get 时(似乎不鼓励,请改用 basic_consume),尝试使用 delivery_tag

直接从频道中确认消息

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

根据 AMQP 规范 get-okbasic-get 的 return 值不包括通道,这与 basic-deliver 的情况相反当消息到达以 basic-consume.

开头的消费者时使用

所以库的行为是正确的。

参见 https://github.com/videlalvaro/php-amqplib/blob/master/PhpAmqpLib/Channel/AMQPChannel.php#L1022

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