我的amqp扩展版本是1.0.1,AMQP协议版本是0-9-1
从队列中获取消息:
<?php
try {
$conn = new AMQPConnection() ;
$conn->setLogin('guest') ;
$conn->setPassword('guest') ;
$conn->connect() ;
if ($conn->isConnected()) {
$channel = new AMQPChannel($conn) ;
if ($channel->isConnected())
{
$queue = new AMQPQueue($channel) ;
$queue->setName('test_queue') ;
$queue->setFlags(AMQP_DURABLE | AMQP_AUTODELETE) ;
$queue->declare() ;
$messages = $queue->get(AMQP_AUTOACK) ;
print_r($messages->getBody()) ;
}
} else {
echo "connect failure ... " ;
}
$conn->disconnect() ;} catch (Exception $e) {
echo $e->getMessage() ;}?>
Run Code Online (Sandbox Code Playgroud)
它不起作用..
Server channel error: 406, message: PRECONDITION_FAILED - parameters for queue 'test_queue' in vhost '/' not equivalent
Run Code Online (Sandbox Code Playgroud)
在我看来,队列已经存在,并且它先前在vhost中使用不同的参数声明(创建).每次都需要使用相同的参数准确地声明队列(或者删除并使用所需的参数重新创建).尝试通过管理插件(http://www.rabbitmq.com/management.html)删除队列,然后再次运行脚本