使用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做持久化处理;