RabbitMQ基本介绍

# 1. 什么是RabbitMQ?

在这里插入图片描述
RabbitMQ是消息中间件的一种,其基本成员包括:

  • Message
    不具名的二进制串,它有消息头和消息体组成的。消息体不透明,消息头包含一系列可选属性,如路由键,优先级别,消息的可持久性等

  • Publisher
    向交换器发送消息的应用程序。

  • Consumer
    从消息队列中取消息的应用程序

  • Exchange
    负责接收Producer发送过来的消息,并查询路由表将消息转发给指定的队列;;交换器有三种类型

  1. Direct交换器 :发布与订阅 完全匹配,routing-key相同的消息会路由到同一个队列中
  2. Topic交换器: 主题规则匹配,根据路由key进行模糊匹配
  3. fanout交换器: 广播模式,不需要路由键
  • Binging;
    用于消息队列和交换器之间的关联。他们之间通过路由键(规则)来绑定

  • Queue
    用于保存消息直至发送给Consumer

  • Routing_key
    消息发送到交换器时,会自带路由键属性,交换器根据绑定的路由规则将消息分发到制定队列

  • Connection
    MQ服务器与应用程序之间的TCP连接

  • Channel
    TCP里的虚拟连接,一条TCP连接可以创建多个信道,发布消息,接收消息,订阅都是在信道中进行的

  • Virtual host
    虚拟主机,表示一批交换器、消息队列和相关对象;虚拟主机是共享相同的身份认证和加密环境的独立服务器域。每个vhost本质上就是一个mini版的RabbitMQ交换器,拥有自己的队列、交换器、绑定和权限机制。vhost是AMQP概念的基础,必须在链接时指定,RabbitMQ默认的vhost是“/”;

    扫描二维码关注公众号,回复: 12552743 查看本文章
  • Broker
    消息队列服务器实体

2. RabbitMQ能做什么?

(1) 同步变异步

若以同步模式实现用户订单请求,则需要消耗200ms的时间,且各服务之间直接调用,相互紧耦合
在这里插入图片描述

(2) 解耦

可以使用多线程同时处理多个服务,解决一般的时间,但是服务之间仍然是直接调用的关系,相互依赖,不易于分离
在这里插入图片描述
在这里插入图片描述
使用MQ后,所有服务均与MQ之间关联,相互之间松耦合,且消息处理都是异步进行

(3) 流量销锋

当有几千几万的用户请求同时访问秒杀服务,每个请求处理都需要消耗一定时间,这种高并发的场景必然导致秒杀服务crash,加入了MQ后,用户请求都发送到队列中存储,不做处理,基本不耗时,然后分发给秒杀服务处理,当请求数量达到上限时,可转发给其他服务,比如提示“秒杀活动结束”等等
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tianzhiyi1989sq/article/details/95391534