服务异步通讯实用篇-RabbitMQ学习笔记

      最后更新:2022-05-09 11:01:56 手机定位技术交流文章

      RabbitMQ

      • 一、初识MQ
        • 1.同步通讯
        • 2.异步通讯
        • 3.MQ常见框架
      • 二. 《兔子快速启动指南》
        • RabbitMQ的概述和安装
          • 1.1 下载镜像
          • 1.2 安装MQ
        • 2.常见消息模型
          • 第2号案件:2 Hello World
      • 三、AMQP春季
        • 1. 基本简单队列模式
        • 工作队列任务栏模式 2
        • 出版(公开)、订阅(订阅)
          • 三.1 出版和订阅模式 -- -- 范式交流
          • 3.2 出版和订阅模式 -- -- 直接交换
          • 3.3 出版、订阅模式 -- -- 外汇
        • 4.消息转换器

      一、初识MQ

      同步通讯和异步通讯

      在这里插入图片描述

      1.同步通讯

      同步调用存在的问题
      以Feign为基础的微观服务之间的呼唤是一种与各种问题同步的技术。
      在这里插入图片描述
      在这里插入图片描述
      总结:

      1. 同步调用的优点:
        它更需要时间,它能迅速产生结果。
      2. 同步调用的问题:
        耦合度高
        性能和吞吐能力下降
        有额外的资源消耗
        有级联失败问题

      2.异步通讯

      异步调用方案
      由事件驱动的方式是实现先行状态的最典型方式。

      事件驱动优势
      优势一:服务解耦

      在这里插入图片描述
      二:改善业绩和工作量
      在这里插入图片描述
      优势三:服务业几乎没有什么非常依赖性,对级联失灵没有恐惧。
      优势四:流量削峰
      在这里插入图片描述
      总结:

      1. 异步通信的优点:
      • 耦合度低
      • 吞吐量提升
      • 故障隔离
      • 流量削峰
      1. 异步通信的缺点:
      • 依靠经纪人的可靠能力 安全和吞咽能力
      • 结构混乱,企业缺乏明确的流动线,难以遵循。

      3.MQ常见框架

      什么是MQ

      MQ (Message Quue) 是一个中文的留言队列, 字面上是存储信件的队列, 即事件驱动结构的经纪人 。

      RabbitMQ ActiveMQ RocketMQ Kafka
      公司/社区 Rabbit Apache 阿里 Apache
      开发语言 Erlang Java Java Scala&Java
      协议支持 AMQP,XMPP,SMTP,STOMP OpenWire,STOMP,REST,XMPP,AMQP 自定义协议 自定义协议
      可用性 一般
      单机吞吐量 一般 非常高
      消息延迟 微秒级 毫秒级 毫秒级 毫秒以内
      消息可靠性 一般 一般

      二. 《兔子快速启动指南》

      RabbitMQ的概述和安装

      LabbitMQ 是一个以 Erlang 撰写的开源信息介质, 官方网站在 URL 上 。

      RabitMQ结构与理念

      在这里插入图片描述

      单人:为了安装在CentOS7虚拟计算机上,我们使用多克。

      1.1 下载镜像

      方式一:在线拉取

      方式二:从本地加载
      当您上传压缩文件到虚拟计算机时, 命令加载镜就足够了 :

      1.2 安装MQ

      要启动 MQ 容器,请使用以下命令:

      概括地说,兔子Q中有几个概念:

      • 频道是操作 MQ 的工具 。
      • Exchange: 信件运行到队列
      • 缓存消息队列
      • 虚拟主机是一个合理的资源分组, 如队列、 交换等等 。

      2.常见消息模型

      官方的MQ文件提供了MQ Demo的五个例子,每个例子都与不同用途相对应:

      • 基本队列
      • 工作队列
        在这里插入图片描述
      • 订阅(印刷、订阅)按开关类型分三类发行:
        • 无线电 " 范式 " 交换台
          在这里插入图片描述

        • 直接交换路线
          在这里插入图片描述

        • 交换主题:主题

      在这里插入图片描述

      第2号案件:2 Hello World

      官方的Hello World基于最基本的信息排队范式,

      • 将消息传送到队列队列,出版商
      • 队列 : 接收并缓存信件的队列 。
      • 消费者: 下标队列, 处理队列消息
        在这里插入图片描述
        总结:

      基本信件队列的发件人 :

      排队信息接收基本方法如下:

      三、AMQP春季

      斯普林安奎普到底是什么?

      高级信息女王协议是一种开发标准,用于在应用程序之间或应用程序之间发送商业信息。 协议与语言或平台无关,更符合微观服务所需的独立性。
      春季AMQP是一套基于AMQP协议定义的API标准集,它为发送和接收信件提供了模板。它分为两部分:Spring-amqp是一个基本抽象,Spring-amqp是一种底部默认实现。

      1. 基本简单队列模式

      在此例子中, 我们将使用 SpringAMQP 在 Hello World 创建一个简单的信息队列 。

      流程如下:

      1. 在母项目中引入春季-amqp 依赖性
      2. org. com。
      3. 消费者服务中的配置消费逻辑, 然后绑定简单 。 Quue this 队列

      第一步是引入AMQP依赖性。
      因为公共和消费者服务都需要安克普。

      第二阶段是开发简单公开的测试方法。

      1. 公共事业中的申请准备。 yml, 包括 mq 连接信息:
      1. 为了设计测试方法,在公共服务中创建一个新的测试类:

      总结:

      AMQP是一种信息传输协议,与语言或平台无关。

      AMQP 信息发送:

      1. 使用开始依赖性引入 Amqp
      2. RabibitMQ 地址配置
      3. 使用 LabbitTemplate 转换和Send 方法。

      第三阶段:听取简单的意见,建立消费者消费的推理。

      1. 消费者服务.yml的申请准备,包括mq连接信息:
      1. 为构筑消费理由,在消费者服务中设立一个新的类别:

      最后,SpringAMQP如何接收讯息?

      • 为 ampq 创建启动依赖关系 。
      • RabibitMQ 地址配置
      • 添加@ component notice, 宣布类
      • 添加@RabitListener 便条到类定义方法, 方法参数就是信息 。
        请记住, 信件一用完就从队列中删除。 rabbitMQ 不提供回溯跟踪 。

      工作队列任务栏模式 2

      工作队列、工作队栏列,以加快信件处理和避免信息排队
      在这里插入图片描述
      案例: 通过模拟工作队列创建众多客户的队列 。

      第一步是让生命者向简单. com 发送循环信息。

      1. 在公共服务中创建测试函数,通过每秒发送50条信息到简单。 Quueue 。
      1. 在消费者服务中,定义两个听众,并倾听简单。
      1. 1名消费者每秒处理50条信息,2名消费者每秒处理10条信息。

      消费预取限制
      更改应用程序.yml 文件中的前 Fech 值, 以规范预告的顶限 :

      世界模型的应用:

      • 队列中有几个消费者,同一个信息只由其中一人处理。
      • 预先设定限制消费者收到信息的数量。

      出版(公开)、订阅(订阅)

      发行订阅与以前情况的不同在于,订阅允许向若干消费者发送相同的信息,这包括交换(交换)。

      典型的交换类型包括:

      • Fanout:广播
      • Direct:路由
      • Topic:话题
        在这里插入图片描述

      注意:交换负责路线,而不是存储,如果路线失败,信息就会丢失。

      三.1 出版和订阅模式 -- -- 范式交流

      信息将传送到Fanout Exchange的每一个队列。
      在这里插入图片描述
      就业 SpringAMQP 以显示Fanout Exchange的用途。
      第一步是宣布消费者服务中的交换、查询和约束。
      例如,SpringAMQP有一个开关、队列和绑紧API。
      在这里插入图片描述
      消费者服务通用类编码如下:添加@configiforation 批注并命名FanoutExchange、Quue和绑定为相关对象:

      第二步:在消费者服务春季拉比(Rabit Lister)类中,实施了两种消费者方法,每种方法都听Fanout。我不知道,排队1和排队。Quue2。

      步骤三:在公共服务部门的 SpringAmqpTest 课程中设置测试方法, 用于播送。 Canout 送出信息 。

      在这里插入图片描述

      总结:

      • 开关有什么影响?
        • 未收到信件:%s%s
        • 向被规则绑定的队列发送信息 。
        • 无法保存信件。 路径失败。 信件错误 。
        • 消息将会通过 FanoutExchange 传送到每个捆绑的队列 。
      • Bean对排队、总机和绑网有什么看法?
        • Queue
        • FanoutExchange
        • Binding

      3.2 出版和订阅模式 -- -- 直接交换

      直接交换涉及从某个队列收到的电文,因此被称为路线模式(路由)。

      • 每个队列使用 Exchange 创建一个具有约束力的密钥 。
      • 在发送信息时,RoutingKey被指派给出版商。
      • 信件通过交换被发送到 ContactKey 和 RoutingKey 之间的线条上。
        在这里插入图片描述

      案例:使用 SpringAMQP 显示直接交换用途

      第1步:交换和队列

      1. 在消费者中,创造两种消费方法:直接.对不起,排队1和直线.Quue2。
      2. 使用@RabbitListener 宣布交换、Quue和RoutingKey。

      步骤二:通过公共服务与直接外汇联系。
      对于公共服务,在SpringAmqpTest课程中增加以下测试方法:

      在这里插入图片描述
      总结:

      • 直接开关和扇灯开关之间的区别是什么?
        • Fanout 将信件发送到与之连接的所有队列 。
        • 直接开关由RutingKey决定,由RutingKey决定,由RutingKey决定指定路线的队列。
        • 如果许多队列共享相同的 RoutingKey, 功能与 Fanout 相似 。
      • @RabbitListener 的批注声明队列和总机通常有什么说法?
        • @Queue
        • @Exchange

      3.3 出版、订阅模式 -- -- 外汇

      主题交换与直接交换完全相同,但必须是几个字的列表。.分割。
      在队列和交换中使用通配符指定“绑定键 ” :
      #: 表示 0 字或多字
      *:代指一个单词
      在这里插入图片描述

      案例:使用SpringAMQP来显示专题交换用途。

      第1步:交换和队列

      1. 在消费者中创造两种消费者方法,聆听主题. Quue1和主题. Quue2。
      2. 使用@RabbitListener 宣布交换、Quue和RoutingKey。

      步骤二:写电子邮件给ToptionExchange@public service.gov。
      对于公共服务,在SpringAmqpTest课程中增加以下测试方法:

      在这里插入图片描述
      直接开关和主题开关有什么区别?

      • 两者相似,主要区别在于主题开关可以支持通配符,而 Binting 键可以支持通配符,Routing 键可以支持多个单词。.分割,通配符可以是#代表 0个或多个,*代表恰好一个

      4.消息转换器

      用发送对象类型信息进行实验 。
      请注意 SpringAMQP 接收的信件类型是对象, 即您可以发送任何类型的信件, SpringAMQP 将帮助我们将信件排序为字节 。
      使用@Bean:

      发送以下信件到测试 :

      消息转换

      消息是由org. org. Spring framework, amqp处理的。 我不知道你在说什么, 支持。 我不知道你在说什么, 顾问。简单Message Conferver 是默认实现 。以JDK为基地的天体输出输出Stream完成顺序排列。
      要改变它,只需声明一个信息转换的豆类类型。 建议使用JSON技术来排列以下步骤:

      • 我们灌输了对公共部门的依赖。
      • 根据公益告示,
      • 关于消费者服务,我们提出杰克逊:
      • 在消费者服务方面,我们将信息服务器定义为:
      • 下一个定义一个消费者, 并倾听主题。 Que 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队 队

      简而言之,SpringAMQP的信息序列和反顺序是如何工作的?

      • 使用信件转换器时, JAVA 序列化是默认的 。
      • 应当指出,发件人和收件人必须使用同一发件人和收件人的信息转换器。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/24238.html

          热门文章

          文章分类