其他分享
首页 > 其他分享> > 06 RabbitMQ 持久化

06 RabbitMQ 持久化

作者:互联网

RabbitMQ 持久化

队列如何实现持久化

之前我们创建的队列都是非持久化的,rabbitmq 如果重启的化,该队列就会被删除掉,如果要队列实现持久化 需要在声明队列的时候把 durable 参数设置为持久化

//声明一个队列
boolean durable = true;//让 Queue 进行持久化
        channel.queueDeclare(TASK_QUEUE_NAME,durable,false,false,null);

但是需要注意的就是如果之前声明的队列不是持久化的,需要把原先队列先删除,或者重新创建一个持久化的队列,不然就会出现错误

这个时候即使重启 rabbitmq 队列也依然存在

消息实现持久化

要想让消息实现持久化需要在消息生产者修改代码,MessageProperties.PERSISTENT_TEXT_PLAIN 添
加这个属性。

//设置生产者发送消息为 持久化消息(要求保存到磁盘上)
channel.basicPublish("",TASK_QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN,message.getBytes("utf-8"));

将消息标记为持久化并不能完全保证不会丢失消息。尽管它告诉 RabbitMQ 将消息保存到磁盘,但是这里依然存在当消息刚准备存储在磁盘的时候 但是还没有存储完,消息还在缓存的一个间隔点。此时并没有真正写入磁盘。持久性保证并不强,但是对于我们的简单任务队列而言,这已经绰绰有余了。

标签:持久,队列,durable,RabbitMQ,消息,磁盘,06
来源: https://www.cnblogs.com/flypigggg/p/15612963.html