RabbitMQ学习笔记

相关范例代码链接

RabbitMQ学习笔记

操作基本模型

  1. Simple Queues简单队列
    • 不足: 耦合性高,生产者一一对应消费者,队列名变更需要各处同时变更
    • 模型如下:
  2. Work Queues工作队列
    • 出现的原因:生产者发送毫不费力,消费者需要业务操作,【消费的慢,生产的快】
    • 模型
    • 分发方式:
      1. Round-Robin 轮询分发(默认的分发方式)
        • 思想:所有消费者均分
      2. Fair-Dispatch 公平分发
        • 思想:能者多劳
        • 设置
          • 对于发送者ch.basicQos(1);
          • 对于消费者要关闭自动应答
            ch.basicQos(1);
            boolean autoAck = false;
            ch.basicConsume(QUEUE_NAME, autoAck, cs)
  3. 消息应答与持久化
    1. 消息应答:
      boolean autoAck = true
      • true: 自动确认模式:一旦确认会自动从队列删除(杀死正在执行的消费者,就会丢失处理的消息
      • false: 手动:有消费者挂掉,就把消息发给另外的消费者,手动回执之后mq再删除
    2. 消息持久化:
      rabbitmq挂了,消息就会消失,所以要存储起来。
      queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments
      其中的durable就是持久化设置,已经声明的队列不能直接修改durable【直接修改会与远端冲突报错】。
  4. Publish Subscribe订阅模式

    • 解读:
      1. 一个生产者对多个消费者
      2. 每个消费者都有自己的队列
      3. 生产者没有直接把消息发送到队列,而是发到Exchanger中
      4. 每个队列都要绑定到Exchanger
      5. 生产者发送的消息经过交换机到达队列,可以实现一个消息被多个消费者消息
    • 注意:
      1. 只有Queue能存储。Exchanger没有存储。

后续待更新

posted @ 2019-09-08 12:10  AaronPi  阅读(91)  评论(0编辑  收藏  举报