在某些特定场景中,队列中的数据十分重要,比如当客户需要确认支付时的验证码,这时候如果服务器突然出现了故障,那么队列中的消息必须存在,不能丢失.这种消息需要进行持久化处理.这也是RabbitMQ的一大特色,消息可靠性
消息持久化:在服务器出现故障后,消息依旧存在于队列之中.
一.queue的持久化
queue的持久化通过durable=true来实现,信道的第二个参数即durable
1
2
3 1channel.queueDeclare(QUEUE_NAME,true,false,true,null);
2
3
二.消息的持久化
消息的持久化通过basicProperties实现,将其设置MessageProperties.PERSISTENT_TEXT_PLAIN
1
2
3 1channel.basicPublish("",QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN,message.getBytes());
2
3
三.测试
首先进行队列信息的生产
进行RabbitMQ服务中断处理
再次启动RabbitMQ服务
再次查看队列消息
依旧存在,RabbitMQ的持久化处理机制,大大增强了数据的可靠性,在很多特定场景下,是必不可少.