Amqplib没有ack消息bug

时间:2014-11-26 15:00:24

标签: php rabbitmq amqp

我正在使用C-compilled库进行兔子AMQP。 尝试从队列中获取消息而不确认我只在消费回调中获得前3个消息。 服务器监控显示没有确认就收到了3条消息。

如果我使用php-amqplib,我会在队列中收到来自队列的所有消息而不会确认。

代码如:

$cnn = new AMQPConnection();
$cnn->setLogin('guest');
$cnn->setPassword('guest');

if ($cnn->connect()) {
} else {
    die("Error");
}

$channel = new AMQPChannel($cnn);
$exchange = new AMQPExchange($channel);
$exchange->setName('test');
$exchange->setType(AMQP_EX_TYPE_TOPIC);
$exchange->setFlags(AMQP_DURABLE | AMQP_AUTODELETE | AMQP_PASSIVE);

try {
    $exchange->declareExchange();
} catch (Exception $e) {
    echo 'Error: '.$e->getMessage();
    die(0);
}

$q = new AMQPQueue($channel);
$q->setName('queue');
$q->setFlags(AMQP_DURABLE | AMQP_PASSIVE);
$cnt = $q->declareQueue();

$q->bind($exchange->getName(),'token');

$cb = function(AMQPEnvelope $params, AMQPQueue $queue) {
    print_r($params->getBody());
    echo "\n";
};

while (true) {
    $q->consume($cb);
}

$cnn->disconnect();

0 个答案:

没有答案