• 《RabbitMQ 实战》读书笔记


    MQ的好处:

    1.业务上接口(系统扩展性变强)

    2.性能提升(同步变异步,效率提高,还方便做负载均衡)

    3.技术兼容(可以连接各种不同语言的系统,作为粘合剂)

    读书笔记:

    1.消息队列的应用场景:系统集成。其它方案是,通过写数据库,定时轮询来读取数据

    2.信道(channel)的好处是:可以减少TCP连接的成本,在同一个TCP连接里,建立多条信道,既保证了私密性,又不会给操作系统的TCP栈造成额外负担

    3.接收消息的2种订阅命令:

      1)basic.consume:自动接收

      2)basic.get:一条条接收(禁止,使用此命令来代替上面的命令,会有性能问题)

    4.消息在接收方处理完上一条之前,不会消费下一条。利用这点,可以在消费方延迟确认,来防止应用过载。

    5.当要丢弃一条消息时,使用basic.reject命令。注意把requeue参数设为false,则不会继续给下一个消费者,而是直接丢进“死信”队列

    6.队列该由谁来创建:如果业务场景允许消息丢失,可以由消费来创建。否则,则应该双方都创建。

    7.路由器的几种类型:

      1)direct:路由键匹配

      2)fanout:广播

      3)topic:订阅。"."把key分割,“*”任意匹配,“#”所有匹配

    PS.根据路由键和交换器类型,服务器会决定将消息投递到哪个队列去。

    8.为了确保消息的准确性,可以使用confirm模式(消息带上唯一ID)。这个模式是异步的,性能消耗很小(对应的有个事务模式,性能消耗巨大,但是可以回滚)。

     其它:

    1.第一次阅读,是略读。很多关于高可用,效率优化方面的内容没仔细看。后面有机会再深入精度一遍

    命令list:

    1.basic.consume:自动接收

    2.basic.get:一条条接收(禁止,使用此命令来代替上面的命令,会有性能问题)

    3.basic.reject:拒收消息。注意把requeue参数设为false,则不会继续给下一个消费者,而是直接丢进“死信”队列

    4.basic.decdeclare:创建队列

    5.exchange.declare:声明自己的交换器

    队列相关参数设置:

    1.exclusive:设为ture的话,则变为私有队列。一个队列只有一个消费者

    2.auto-delete:当消费者没有时,自动删除队列

    3.queue.declare的passive参数:如果为ture,用于检测队列是否存在

  • 相关阅读:
    Spring boot核心注解
    Spring-boot配置文件
    JAVA操作Excel
    操作系统之基础
    Batch Normalization
    解决ios微信页面回退不刷新的问题
    textarea高度自适应,随着内容增加高度增加
    旋转卡 可以用做登录注册
    一个页面tab标签切换,都有scroll事件的解决办法
    input type="radio" 赋值问题
  • 原文地址:https://www.cnblogs.com/xujanus/p/11417185.html
Copyright © 2020-2023  润新知