rabbitmq 基本信息

167 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一 RabbitMq介绍

我们通常谈到消息队列,就会联想到这其中的三者:生产者、消费者和消息队列,生产者将消息发送到消息队列,消费者从消息队列中获取消息进行处理。对于RabbitMQ,它在此基础上做了一层抽象,引入了交换器exchange的概念,交换器是作用于生产者和消息队列之间的中间桥梁,它起了一种消息路由的作用,也就是说生产者并不和消息队列直接关联,而是先发送给交换器,再由交换器路由到对应的队列,至于它是根据何种规则路由到消息队列的,就是我们下面需要介绍的内容了。这里的生产者并没有直接将消息发送给消息队列,而是通过建立与Exchange(交换器)的Channel(信道),将消息发送给Exchange,Exchange根据路由规则,将消息转发给指定的消息队列。消息队列储存消息,等待消费者取出消息,消费者通过建立与消息队列相连的Channel,从消息队列中获取消息。

Rabbit Mq ——》 Message Queue : 消息队列

队列特点:先进先出

生产者:发送消息方称为是生产者,谁生产消息谁就是生产者

消费者:监听消息(队列),监听到后拉取下来进行消费,称为是消费者

二 Rabbitmq优劣势

image-20200926091359305.png

1. 优势
  • 应用解耦

    生产者和消费者之间进行了应用的解耦

  • 异步提速 使用前提是系统为异步调用系统

image-20200926092904090.png

  • 削峰填谷

image-20200926093952347.png

image-20200926094625070.png

通过削峰填谷保证系统的稳定性
2. 劣势
  • 系统稳定性下降

  • 数据一致性问题

    • 消息丢失---->消息确认
    • 消息重复---->消息幂等性问题
    • ........
3. 使用场景
  1. 系统必须支持异步通信

三 MQ常见产品

  • RabbitMq

    • 使用erlang语言进行开发,效率高,吞吐量很大
    • 属于rabbit公司
  • RocketMq

    • 使用java开发,脱胎于kafka(来源、模仿)
    • 属于阿里,目前已经捐献给apache,称为了顶级项目
  • ActiveMQ

    • 是一款很古老的mq,目前使用的较少
    • 属于apache
  • Kafka

    • 属于apache
    • 用于大数据环境使用

四 Rabbitmq架构

image-20200926103922017.png

注意事项:

  • Exchange交换机不具备保存消息的功能,需要与队列完成绑定
  • 绑定后符合规则的消息会路由至队列进行保存,不符合路由规则的消息或者是没有绑定队列的交换机消息会丢失