php rabbitmq持久化无效

已经声明了持久化。但是重起服务器之后,队列里面的数据就不见了

$conn_args = array(

'host' => '127.0.0.1',
'port' => '5672',
'login' => 'guest',
'password' => 'guest',
'vhost'=>'/'

);
$e_name = 'e_linvo'; //交换机名
$q_name = 'q_linvo'; //队列名
$k_route = 'key_1'; //路由key

//创建连接和channel
$conn = new AMQPConnection($conn_args);
if (!$conn->connect()) {

die("Cannot connect to the broker!\n");

}
$channel = new AMQPChannel($conn);

//创建交换机
$ex = new AMQPExchange($channel);
$ex->setName($e_name);
$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型
$ex->setFlags(AMQP_DURABLE); //持久化
echo "Exchange Status:".$ex->declareExchange()."n";

//创建队列
$q = new AMQPQueue($channel);
$q->setName($q_name);
$q->setFlags(AMQP_DURABLE); //持久化

阅读 3.9k
3 个回答

持久化会保存到硬盘,对效率有要求的话要慎用,另外官网demo有bug

新手上路,请多包涵

exchange持久化 queue持久化 消息持久化,在投递时指定delivery_mode=> 2

当且仅当 exchange持久化 queue持久化 message持久化(三者同时都持久化,才能真正持久化)
message持久化,是在生产者投递消息时

$exchange->publish($message, $routeKey, AMQP_NOPARAM, ['delivery_mode' => 2])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题