参考资料: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"));

消息持久化会带来很大的性能开销,需要仔细考虑是否需要开启。

最新文章

  1. JSP九大内置组件
  2. java简单计算器
  3. sqlserver -- 学习笔记(八)体验charindex、stuff 和 for xml path在实际问题中的应用及几个问题的探讨
  4. java小程序:求完全数
  5. protocol buffer的简单使用
  6. 原子/Atomic操作
  7. java中对除法取2位小数的一点试验
  8. (转)Windows重启延迟删除,重命名技术原理
  9. 20 你应该知道的PHP库
  10. The 2014 ACMICPC Asia Regional Guangzhou Online
  11. Test 17
  12. 查看当前Jquery版本
  13. Docker普通用户不使用sudo提权
  14. 洛谷 P1223排队接水【贪心】
  15. django报错解决:view must be a callable or a list/tuple in the case of include().
  16. MVC的使用
  17. java开发-问题清单
  18. SmartUpload工具上传文件步骤
  19. 【10.15总结】绕过CSRF的Referer保护
  20. 160303、js加密跟后台加密对应

热门文章

  1. recv函数返回值说明
  2. SQL Server 公用表表达式(CTE)实现递归的方法
  3. 英语笔记-some words about description of girl
  4. clock_gettime接口和linux时间系统
  5. [省选模拟]array
  6. Delphi XE5 for Android (一)
  7. 格子中输出|2015年蓝桥杯B组题解析第四题-fishers
  8. 【第二十七章】 springboot + zipkin(brave-okhttp实现)
  9. 基础dp 记录
  10. java中年月日的加减法,年月的加减法使用