RabbitMQ入门_13_消息持久化
2024-10-13 20:10:54
参考资料:https://www.rabbitmq.com/tutorials/tutorial-two-java.html
默认情况下,队列中的消息是不持久化的。如果 RabbitMQ 崩溃,队列中的消息就全部消失了。
为了防止 RabbitMQ 重启导致的消息丢失,我们需要对消息持久化,将消息保存在物理存储介质中。
RabbitMQ 实现消息持久化需要:
1. 消息所在的队列必须设置为 durable
boolean durable = true;
channel.queueDeclare(queueName, durable, false, false, null);
2. 消息本身必须使用持久化模式发送
AMQP.BasicProperties properties = new AMQP.BasicProperties.Builder().deliveryMode(2).build();
senderChannel.basicPublish("", QUEUE_NAME, properties, "Message 1".getBytes("UTF-8"));
delivery mode 为 2 时,表示发布的消息需要被持久化。
可以使用更简明的 MessageProperties.MINIMAL_PERSISTENT_BASIC 指明消息需要被持久化
senderChannel.basicPublish("", QUEUE_NAME, MessageProperties.MINIMAL_PERSISTENT_BASIC, "Message 2".getBytes("UTF-8"));
消息持久化会带来很大的性能开销,需要仔细考虑是否需要开启。
最新文章
- JSP九大内置组件
- java简单计算器
- sqlserver -- 学习笔记(八)体验charindex、stuff 和 for xml path在实际问题中的应用及几个问题的探讨
- java小程序:求完全数
- protocol buffer的简单使用
- 原子/Atomic操作
- java中对除法取2位小数的一点试验
- (转)Windows重启延迟删除,重命名技术原理
- 20 你应该知道的PHP库
- The 2014 ACMICPC Asia Regional Guangzhou Online
- Test 17
- 查看当前Jquery版本
- Docker普通用户不使用sudo提权
- 洛谷 P1223排队接水【贪心】
- django报错解决:view must be a callable or a list/tuple in the case of include().
- MVC的使用
- java开发-问题清单
- SmartUpload工具上传文件步骤
- 【10.15总结】绕过CSRF的Referer保护
- 160303、js加密跟后台加密对应