zoukankan      html  css  js  c++  java
  • RabbitMQ Lazy Queue 延迟加载

    Lazy Queue

    在著名的单例设计模式中就有懒汉式的实现方式,也就是只有在你需要的时候我才去加载。

    这让博主想到了以前上学的时候,每到了假期的假期作业,在假期的时候是从来不做的。只有在快开学老师要检查的时候才去做,这也是一个懒汉式的体现,哈哈。

    而RabbitMQ也是有lazy queue的,queue中的消息存在磁盘只有在consumer来找它要了,才会加载到内存。

    下面是官方文档,可以看到去lazy queue的介绍,lazy queue是在3.6.0版本被引入的,lazy queue的信息尽可能的都保存在磁盘上,仅在消费者请求的时候才会加载到RAM中。

    使用默认的queue,并且消息不持久化的话,都是放在RAM中的。当消息峰值的时候,大量的消息在RAM导致rabbitmq服务器压力过大,当RAM使用量到一定数字的时候就会因为压力把数据移到硬盘中,但是不要嗨皮,rabbitmq服务器重启后消息一样会丢失。而且过大的压力可能会出现各种各样的异常情况,这并不是我们想要看到的

    image

     

    使用lazy queue会有以下几种搭配

    lazy queue 消息不持久化 , 但是这种模式还是会把消息放到硬盘里,RAM的使用率会一直很稳定,但是重启后一样会丢失消息

    lazy queue 消息持久化,这种方式无疑是最佳搭配,消息放到硬盘并且不会因为服务器重启而丢失,面对高并发也是从容不已

    设置lazy queue也很简单,下面代码是一个示例,x-queue-model : lazy

    //声明一个懒队列
                    channel.QueueDeclare("lazyqueue", true, false, false, new Dictionary<string, object>
                    {
                        { "x-queue-mode","lazy"}
                    });
  • 相关阅读:
    Python第三方库SnowNLP(Simplified Chinese Text Processing)快速入门与进阶
    Python第三方库SnowNLP(Simplified Chinese Text Processing)快速入门与进阶
    用python玩微信(聊天机器人,好友信息统计)
    BIOS与UEFI
    MBR&/BOOT&GRUB
    Hard Disk Driver(GPT)
    Hard Disk Drive(MBR)
    反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux
    硬盘分区基本知识
    计算机启动过程
  • 原文地址:https://www.cnblogs.com/LiangSW/p/6231178.html
Copyright © 2011-2022 走看看