首页 > 其他分享 >RabbitMQ简介

RabbitMQ简介

时间:2023-07-11 10:34:30浏览次数:30  
标签:交换器 RoutingKey Exchange 队列 简介 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类型交换性能差,在实际中并不常用.

 

标签:交换器,RoutingKey,Exchange,队列,简介,RabbitMQ,消息,路由
From: https://www.cnblogs.com/xiaoxi888/p/17543093.html

相关文章

  • 嵌入式数据库简介
    什么是嵌入式数据库?嵌入式数据库主要有两种定义:用于嵌入式系统(如移动设备或消费电子产品)的数据库。嵌入式数据库需要占用空间小,并在内存和CPU能力有限的环境中提供足够的性能。嵌入到应用程序中的数据库--这意味着应用程序不与数据库服务器通信,而是内置数据库组件。这种类型的......
  • 超级对齐简介zz
    我们如何确保人工智能系统比人类聪明得多并遵循人类意图?目前,我们还没有一个解决方案来引导或控制潜在的超级人工智能,并防止其失控。我们当前调整人工智能的技术,例如根据人类反馈进行强化学习,依赖于人类监督人工智能的能力。但人类无法可靠地监督比我们聪明得多的人工智能系统,乙[......
  • K8S简介
    Kubernetes(K8S)是什么它是一个为容器化应用提供集群部署和管理的开源工具,由GoogleDocs开发。kubernetes这个名字源于希腊语,意为“舵手”或“飞行员”。k8s这个缩写就是因为k和s之间有8个字符的关系。GoogleDocs在2014年开源了Kubernetes项目。主要特性高可用,不宕机,自动......
  • RabbitMQ基础及实践
    一、RabbitMQ的基本概念,以及6种工作模式,消息确认机制RabbitMQ简介:RabbitMQ基于AMQP标准,采用Erlang语言开发的消息中间件。 基本概念:●Producer:作为消息的生成者。●Consumer:作为消息的消费者。●Connection:消息的发布方或者消息的消费方和broker之间的TCP连接。●......
  • rabbitMQ二(rabbitMQ图形化界面)
    RabbitMQManagement:IP+15672(可视化界面端口号加上前缀1:5672->15672) username和password默认都是guest rabbitMQ架构图 ......
  • 1-MyBatisPlus 入门案例与简介
    1.入门案例MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发、提供效率。开发方式基于MyBatis使用MyBatisPlus基于Spring使用MyBatisPlus基于SpringBoot使用MyBatisPlusSpringBoot整合MybatisPlus具体实现步骤为:创建数据库......
  • csharp hook 简介
    对于csharp的hook程序,基于manage的性质,不是hook自身进程内消息,就是hook全局windows消息。一般我们hook都是nativedll将它放入第三方进程的内存空间里去。 csharp里的几种hook方式1.在win32,winform或wpf的窗口内添加消息hook,这样接受的是只在该窗口上产生的消息。2。SetWin......
  • rabbitmq
    一.死信队列1.Config配置类packagecom.yufou.studyrabbitmq.config;importorg.springframework.amqp.core.*;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.a......
  • 利用RabbitMQ 的死信队列来做定时任务
    常用的应用场景死信队列常常用作延时关闭订单(如订单的超时后的取消订单等),虽然小项目中可以用定时轮询的方法进行检查,但是数据量一旦比较大时,定时轮询将给数据库带来不小的压力,而且定时间隔无法进行动态调整,特别是一个系统中,同时存在好几个定时器的时候,就显得非常的麻烦,同时给数据......
  • centos7 安装 rabbitmq
    1、下载RabbitMQ安装包(请自行下载erlang和对应版本的rabbitmq)2、上传安装包到Linux中将上面三个软件上传到/usr/local/software目录下(如果没有software需要自己创建)3、安装文件(分别按照以下顺序安装)进入software文件夹,依次使用如下命令 rpm-ivherlang-21.3-1.el7.......