RabbitMQ简介

  1. 简介
    •   消息队列提供一个异步通信机制,消息的发送者不必一直等待消息被成功处理才返回,而是立即返回。消息中间件负责处理网络通信,如果网络连接不可用,消息被缓存到队列中;当网络畅通时,消息将转发给相应的应用程序或服务。前提是这些服务或程序订阅了该消息。
    • RabbitMQ是使用Erlang语言(在数据交互方面性能优秀,有着和原生Socket一样的延迟,这也是RabbitMQ高性能的原因所在编写的,并且RabbitMQ是基于AMQP协议的。
    • 特点
      • 开源、性能优秀、稳定保障
      • 提供可靠性消息投递模式、返回模式
      • 与Spring AMQP完美结合,API丰富
      • 集群模式丰富,表达式配置、HA模式、镜像队列模型
      • 保证数据 不丢失的前提做到高可靠性、可用性
    • 应用场景
      • 异步处理,把消息放入消息中间件中,等到需要的时候再去处理
      • 流量削峰,例如在秒杀活动,在短时间内访问量急剧增加,使用消息队列,当消息队列满了就拒绝响应,跳转到错误页面,这样就可以使系统不会因为超负载而崩溃
      • 日志处理
      • 应用解耦
        •   使用MQ发布订阅模式,服务A只生产消息到MQ,B、C、D从MQ中读取消息。需要A的消息就订阅,不需要就取消订阅。这种方式可以降低服务或者系统之间的耦合
    • AMQP协议
      • 二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
      • 概念
        • Server
          • 接收客户端的连接 实现AMQP实体服务
        • Connection
          •   连接 应用程序与Server的网络连接,TCP连接
        • Channel
          •   信道,消息读写等操作在信道中进行。客户端可以建立多个信道,每个信道代表一个会话任务
        • Message
          • 消息,应用程序和服务器之间传送的数据,消息可以非常简单,也可以非常复杂,在Properties和Body组成
          • Properties为外包装,可以对消息进行装饰,比如消息的优先级,延迟等高级特性
          • Body就是消息体内容
        • Virtual Host
          •   虚拟主机,用于逻辑隔离。一个虚拟主机里面可以有若干个Exchange和Queue,同一个虚拟主机里面不能有相同名称的Exchange或Queue
        • Exchange
          • 交换器,接收消息,按照路由规则将小溪路由到一个或多个队列,如果路由不到,或者返回给生产者,或者直接丢弃。
          • RabbitMQ常用的交换器类型有direct,topic,fanout,header四种  
        • Binding
          •   绑定,交换器和消息队列之间的虚拟连接,绑定中可以包含一个或者多个RoutingKey
        • RoutingKey
          • 路由键,生产者将消息发送给交换器的时候,会发送一个RoutingKey,用来指定路由规则,这样交换器就知道把消息发送到哪个队列中
          • 路由键通常为“.”分割的字符串 例如“com.rabbitmq“
        • Queue
          •   消息队列,用来保存消息,供消费者消费。
      • AMQP协议模型  

 

        

  •  AMQP组成
    • 生产者
    • 消费者
    • 服务端
  • 常用交换器
    • Direct Exchange
      • 将所有发送到该交换器的消息被转发到RoutingKey指定的队列中。也就是说路由到BindingKey和RoutingKey完全匹配的队列中
    • Topic Exchange
      • 将所有发送到Topic Exchange的被转发到RoutingKey中指定的Topic队列上面
      • Exchange将RoutingKey和某个Topic进行模糊匹配。其中“”匹配一个词,“#”用于匹配一个或者多个词
      • 例如,“com.#”可以匹配“com.rabbitmq.oa”和“com.rabbitmq”;
    • Fanout Exchange
      • 不处理路由键,会把所有发送到交换器的消息路由到所有绑定的队列中,
      • 优点:转发消息快,性能最好
    • Headers
      •   根据消息内容中的header属性进行匹配。headers类型交换性能差,在实际中并不常用.

 

posted @ 2023-07-11 10:29  小溪_1  阅读(29)  评论(0编辑  收藏  举报