• RabbitMQ


    一、延迟队列概念

    二、延迟队列使用场景

    三、RabbitMQ 中的 TTL 

    TTL 是什么呢? TTL 是 RabbitMQ 中一个消息或者队列的属性,表明一条消息或者该队列中的所有 消息的最大存活时间,单位是毫秒。

    换句话说,如果一条消息设置了 TTL 属性或者进入了设置TTL 属性的队列,那么这 条消息如果在TTL 设置的时间内没有被消费,则会成为"死信"。如果同时配置了队列的TTL 和消息的 TTL,那么较小的那个值将会被使用,有两种方式设置 TTL。

    3.1 队列设置TTL

    3.2 消息设置TTL

    3.3 两者的区别

    • 如果设置了队列的 TTL 属性,那么一旦消息过期,就会被队列丢弃(如果配置了死信队列被丢到死信队 列中)。
    • 如果设置了消息的 TTL 属性,消息即使过期,也不一定会被马上丢弃,因为消息是否过期是在即将投递到消费者之前判定的,如果当前队列有严重的消息积压情况,则已过期的消息也许还能存活较长时间。
    • 如果不设置 TTL,表示消息永远不会过期。
    • 如果将 TTL 设置为 0,则表示除非此时可以 直接投递该消息到消费者,否则该消息将会被丢弃。

    四、延迟队列实战--设置队列TTL(基于死信队列)

    4.1 重点

    1. 这里集成了springboot,原本在生产者/消费者里定义的交换机和队列,会改在@configuration文件里直接声明注入好

    2. “交换机”-->“队列”方向的绑定,是需要用到Binding类来绑的

      

    3. “队列”-->“(死信)交换机”方向的绑定,是直接使用参数在定义队列时绑定的

    4.2 具体代码

    配置文件类代码

    生产者

    消费者 

    测试

    4.3 存在的问题

    五、延迟队列实战--设置消息TTL(基于死信队列)

    5.1 重点

    5.2 具体代码

    配置类代码

    消费者

    测试

    5.3 存在的问题

    六、延迟队列实战--交换机TTL(基于插件*最优)

    6.1 基于死信队列 vs 基于插件

    6.2 插件安装

    6.3 具体代码

    配置文件类代码

    生产者

    消费者

    测试

  • 相关阅读:
    数据库——事务
    数据库——连接池
    JDBC——使用jdbc操作时,如何提取数据的性能
    2019-06-26 The Eclipse executable launcher was unable to locate its companion launcher
    2019-06-24在windows下如何查看80端口占用情况?是被哪个进程占用
    2019-06-19_解决ActiveMQ访问出现503的错误
    2019-06-17 tomcat启动;zookeeper启动批处理
    2019-06-13记忆 长命令
    2019-06-13linux的vi编辑器中如何查找关键字
    2019-06-13-vim配色步骤
  • 原文地址:https://www.cnblogs.com/frankcui/p/14998560.html
Copyright © 2020-2023  润新知