MQ复习笔记:RabbitMQ

MQ: Message Queue

优劣势

  • 优势:异步解耦、削峰填谷
  • 劣势:增加系统复杂度

常用MQ

MQ 单机吞吐 消息延迟
RabbitMQ 万级(次之) 微秒
ActiveMQ 万级(最差) 毫秒
RocketMQ 十万级(最好) 毫秒
Kafka 十万级(次之) 毫秒

RocketMQ

常用概念
  • Broker: RabbitMQ server
  • Virtual Host: 可以理解为不同的数据库
  • Connection: TCP连接(长连接)
  • Channel:轻量级Connection,因为Connection开销大
  • Exchange, Binding, Queue: Exchange是消息到达的第一站,根据binding信息,分发到对应的Queue中
    MQ复习笔记:RabbitMQ_第1张图片

Exchange, Binding, Queue的不同设置会对应RabbitMQ的不同模式

  • hello world: 一个生产者 一个消费者
  • work queues: 多个消费者监听一个Queue(不重复消费消息)
  • pub/sub(fanout): 生产者指定一个Exchange,无需指定binding,消费者指定Queue绑定到该Exchange上
  • routing(direct):生产者指定一个Exchange,并指定RoutingKey,消费者指定Queue, RoutingKey绑定到该Exchange上, 相当于只监听这个队列该RoutingKey的消息
  • topic(topic):routing基础上支持通配符

消息可靠性投递

  1. 集群 + 负载均衡
  2. 生产者消息确认到达交换机/队列
    • confirm
      • ack:被exchange签收
      • nack:被exchange拒收
    • return: 进入队列
  3. 消费者消息确认: ack/nack

延迟队列

RabbitMQ没有直接实现的延迟队列,需要通过TTL+死信队列实现

你可能感兴趣的:(系统学习,分布式,消息队列)