RabbitMQ消息持久化保存

作者: | 2017年12月7日

使用RabbitMQ消息队列,为保证数据不丢失,就必须使用持久化处理,其实非常简单,就二行代码的改造,但有注意事项;

1.Queues 持久化

这是持久化时创建Queues的代码

1
channel.queueDeclare(QUEUE_NAME, true, false, false, null);

这是非持久化时创建Queues的代码

1
channel.queueDeclare(QUEUE_NAME, false, false, false, null);

2.消息持久化

这是持久化时创建消息的代码

1
channel.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());

这是非持久化时创建消息的代码

1
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

以上的改动后,发送消息就基本可以保证消息的持久化了,当然你也可以在持久化的Queues中发送非持久化的消息;

注意事项:
1.如果想要消息持久化必须Queues标识为持久化;
2.接收方如果需要接收的Queues被设置为持久化后,同样也需要申明持久化才能接收消息;
3.如果之前存在一个非持久化的Queues,要么删除,要么命名一个新的Queues做持久化处理;