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-ok
,basic-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
我目前正在使用 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:(黄色部分)
当使用 basic_get 时(似乎不鼓励,请改用 basic_consume),尝试使用 delivery_tag
直接从频道中确认消息$this->channel->basic_ack($msg->delivery_info['delivery_tag']);
根据 AMQP 规范 get-ok
,basic-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