zoukankan      html  css  js  c++  java
  • RabbitMQ入门_13_消息持久化

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

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

  • 相关阅读:
    7-1 N个数求和
    3662. 最大上升子序列和
    树状数组
    堆优化Dijkstra java模板
    皮亚诺曲线距离
    最长公共子序列(计数问题)
    最小路径覆盖
    极角排序
    2619. 询问
    Hessian矩阵与局部极小值
  • 原文地址:https://www.cnblogs.com/gordonkong/p/6992800.html
Copyright © 2011-2022 走看看