gpt4 book ai didi

php - 如何使用 php 在 RabbitMQ 中检索相同的消息两次或更多次

转载 作者:行者123 更新时间:2023-11-28 23:32:31 25 4
gpt4 key购买 nike

我在使用 php + RabbitMQ + MySQL 时遇到了一些问题。

我有 php 工作人员,它更新数据库中的一条记录。现在我试图做出正确的如果服务器 MySQL 消失,工作。

我在做什么:我正在尝试重新连接到 DB 10 次,如果我不能 - 需要将此消息返回给 RabbitMQ。

接受消息我使用basic_ack,拒绝我使用basic_nack


示例:

    if ($can_accept_message) {
$message->delivery_info['channel']->basic_ack($message->delivery_info['delivery_tag']);

} else {
$message->delivery_info['channel']->basic_nack($message->delivery_info['delivery_tag']);
}

但是 basic_nack 从队列中删除了这条消息,我不能再重复了;(

像这样尝试: https://github.com/php-amqplib/php-amqplib/blob/d2b8a292f709b79b1615bef87b1b89bde4c7c347/demo/basic_nack.php

正在阅读: https://github.com/php-amqplib/php-amqplib/issues/221

但还是不行。

怎么了?也许您还有其他想法?

最佳答案

看来函数 basic_nack 的定义如下:

/**
* Rejects one or several received messages
*
* @param string $delivery_tag
* @param bool $multiple
* @param bool $requeue
*/
public function basic_nack($delivery_tag, $multiple = false, $requeue = false)

可以看到,第三个参数是$requeue = false

你应该试试

else {
$message->delivery_info['channel']->basic_nack($message->delivery_info['delivery_tag'], false, true);
}

关于php - 如何使用 php 在 RabbitMQ 中检索相同的消息两次或更多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36945833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com