我们正在使用RabbitMQ v3.7.5,AMQP 0.9.1,Erlang 20.1.7.1,PHP 7,centos 7
我们的消费者是使用php-amqplib v2.9.1编写的
我们通过使用curl调用URL来开始我们的消费者。使用者有时会按预期工作,但是一段时间后,所有使用者都会加倍,即表示同一使用者正在运行两个连接。一旦发生这种情况,当队列上有数据时,没有任何使用者响应,但是队列上接收到的所有数据都会丢失。
有人遇到过同样的问题吗?
消费者代码(我使用的是官方网站上的相同代码:https://www.rabbitmq.com/tutorials/tutorial-two-php.html)
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('task_queue', false, true, false, false);
echo " [*] Waiting for messages. To exit press CTRL+C\n";
$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "\n";
sleep(substr_count($msg->body, '.'));
echo " [x] Done\n";
$msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
};
$channel->basic_qos(null, 1, null);
$channel->basic_consume('task_queue', '', false, false, false, false, $callback);
while (count($channel->callbacks)) {
$channel->wait();
}
$channel->close();
$connection->close();
预期结果:不应复制使用者。