RabbitMQ
文章平均质量分 90
MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依
别团等shy哥发育
硕士在读,对分布式、中间件、容器、微服务、深度学习、机器学习与数据挖掘方面感兴趣,希望可以在这些方面和大家交流学习方法。
后续文章会搬到这里:www.codeleader.top
展开
-
RabbitMQ应用场景和集群搭建复习
虽然并行已经提高的处理时间,但是,前面说过,邮件和短信对我正常的使用网站没有任何影响,客户端没有必要等着其发送完成才显示注册成功,应该是写入数据库后就返回.由此可以看出,引入消息队列后,用户的响应时间就等于写入数据库的时间+写入消息队列的时间(可以忽略不计),引入消息队列后处理后,响应时间是串行的3倍,是并行的2倍。1.用户的请求,服务器收到之后,首先写入消息队列,加入消息队列长度超过最大值,则直接抛弃用户请求或跳转到错误页面.用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功。原创 2023-06-23 10:56:58 · 1938 阅读 · 0 评论 -
RabbitMQ基础与实操复习
MQ(Message Quene) : 翻译为消息队列,通过典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,轻松的实现系统间解耦。别名为消息中间件通过利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。原创 2023-06-23 10:36:38 · 2290 阅读 · 0 评论 -
RabbitMQ之Federation Exchange、Federation Queue、Shovel
文章目录1、Federation Exchange(联邦交换机)1.1 为什么使用联邦交换机1.2 搭建步骤1.2.1 需要保证每台节点单独运行1.2.2 在每台机器上开启federation相关插件1.2.3 原理图(先运行consumer在node2创建fed_exchange)1.2.4 在downstream(node2)配置upstream(node1)1.2.5 添加policy2、Federation Queue(联邦队列)2.1 为什么使用联邦队列2.2 搭建步骤2.2.1 原理图2.2.2原创 2021-12-28 11:04:15 · 2024 阅读 · 0 评论 -
RabbitMQ之集群搭建
`RabbitMQ之集群搭建`RabbitMQ集群1、Clustering1.1 使用集群的原因1.2 集群搭建步骤1.2.1 准备三台虚拟机1.2.2 修改三台机器的主机名称1.2.3 配置各个节点的hosts文件,让各个节点都能户向识别对方1.2.4 确保各个节点的cookie文件使用的是同一个值1.2.5 启动RabbitMQ服务1.2.6 在节点2执行如下命令1.2.7 在节点3执行如下命令1.2.8 查看集群状态1.2.9 需要重新设置设置用户1.2.10 查看管理界面2、镜像队列2.1原创 2021-12-27 17:51:19 · 2294 阅读 · 0 评论 -
RabbitMQ之其他特性(幂等性、优先级队列、惰性队列)
RabbitMQ之其他特性1、幂等性1.1 概念1.2 消息重复消费1.3 解决思路1.4 消费端的幂等性保障1.5 唯一ID+指纹码机制1.5 Redis原子性2、优先级队列2.1 使用场景2.2 实战2.2.1 消息生产者2.2.2 消息消费者2.2.3 优先级队列测试1、幂等性1.1 概念 用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了原创 2021-12-26 21:27:59 · 1619 阅读 · 0 评论 -
RabbitMQ之备份交换机
备份交换机1、备份交换机2、代码架构图3、配置类4、报警消费者5、生产者代码6、application.properties7、测试结果分析1、备份交换机 有了 mandatory 参数和回退消息,我们获得了对无法投递消息的感知能力,有机会在生产者的消息 无法被投递时发现并处理。但有时候,我们并不知道该如何处理这些无法路由的消息,最多打个日志,然 后触发报警,再来手动处理。而通过日志来处理这些无法路由的消息是很不优雅的做法,特别是当生产者 所在的服务有多台机器的时候,手动复制日志会更加麻烦而且容易出错原创 2021-12-25 18:10:23 · 921 阅读 · 0 评论 -
RabbitMQ之发布确认高级
发布确认高级引言1、发布确认(SpringBoot版本)1.1 代码架构图1.2 配置文件1.3 添加配置类1.4 消息生产者1.5 回调接口1.6 消息消费者1.7 测试结果2、回退消息2.1 Mandatory参数2.2 回调接口2.3 消息生产者代码2.4 配置2.5回退测试引言 在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?原创 2021-12-25 14:44:47 · 1208 阅读 · 0 评论 -
RabbitMQ之延迟队列(整合SpringBoot)
延迟队列1、延迟队列概念2、延迟队列使用场景3、RabbitMQ中的TTL3.1 消息设置TTL与队列设置TTL的区别4、整合SpringBoot项目4.1 创建项目4.2 添加依赖4.3 修改配置文件4.4 添加Swagger配置类4.5 队列TTL4.5.1 代码架构图4.5.2 配置文件类代码4.5.3 消息生产者代码4.6 RabbitMQ插件实现延迟队列4.6.1 安装延迟队列插件4.6.2 代码架构图4.6.3 配置文件类代码4.6.4 消息生产者代码4.6.5 消息消费者代码1、延迟队列概念原创 2021-12-24 21:16:32 · 1019 阅读 · 0 评论 -
RabbitMQ之死信队列
死信队列1、死信队列的概念2、死信的来源3、死信实战3.1 代码架构图3.21、死信队列的概念先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使原创 2021-12-23 01:28:04 · 1225 阅读 · 0 评论 -
RabbitMQ之交换机
Exchanges1、Exchanges1.1、Exchanges概念1.2、Exchanges的类型1.3、无名exchange2、临时队列3、绑定(bindings)4、Fanout4.1 Fanout介绍1、Exchanges1.1、Exchanges概念 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。 相反,生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面原创 2021-12-21 13:00:10 · 855 阅读 · 0 评论 -
RabbitMQ发布确认
发布确认1、发布确认原理2、发布确认策略2.1 开启发布确认的方法2.2 单个确认发布2.3 批量确认发布2.4 异步确认发布3、三种发布方式确认速度对比1、发布确认原理 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息原创 2021-12-19 15:25:02 · 855 阅读 · 0 评论 -
RabbitMQ持久化与预取值
RabbitMQ持久化与预取值1、概念2、队列如何实现持久化3、消息实现持久化4、不公平分发5、预取值1、概念 刚刚我们已经看到了如何处理任务不丢失的情况,但是如何保障当 RabbitMQ 服务停掉以后消息生产者发送过来的消息不丢失。默认情况下 RabbitMQ 退出或由于某种原因崩溃时,它忽视队列和消息,除非告知它不要这样做。确保消息不会丢失需要做两件事:我们需要将队列和消息都标记为持久化。2、队列如何实现持久化 之前我们创建的队列都是非持久化的,RabbitMQ如果重启的话,该队列就会被删除原创 2021-12-18 20:50:38 · 1220 阅读 · 0 评论 -
RabbitMQ消息应答
RabbitMQ消息应答1、概念2、自动应答3、消息应答的方法4、Multiple的解释5、消息自动重新入队6、消息手动应答代码6.1 启动RabbitMQ6.2 消息生产者6.3 消费者016.4 消费者026.5 手动应答效果演示1、概念 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并且只完成了部分它挂掉了,会发生什么情况。RabbitMQ一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个消费者挂掉了,我们将丢失正在处理的消息。以及后续发送给该对原创 2021-12-18 20:24:35 · 260 阅读 · 0 评论 -
Work Queues的轮询分发(工作队列/任务队列)
Work Queues工作队列简介1、轮询发送消息2、抽取连接工厂的工具类3、启动两个工作线程4、消息生产者工作队列简介 工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进=程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。1、轮询发送消息这里我们会启动两个工作线程,一个消息发送线程,我们看看这两个工作线程是如何工作的。2、抽取连接工厂的工具类/原创 2021-12-12 23:28:17 · 366 阅读 · 0 评论 -
RabbitMQ简单消息发送与接收
RabbitMQ简单消息发送与接收1、前言2、简单消息发送与接收实战2.1 引入依赖1、前言这里将编写两个java程序。发送单个消息的生产者和接收消并打印出来的消费者。在下图中,p是我们的生产者,c是我们的消费者。中间框是一个队列-RabbitMQ代表使用者保留的消息缓冲区。2、简单消息发送与接收实战2.1 引入依赖<build> <plugins> <plugin> <groupId>org.a原创 2021-12-12 20:47:24 · 432 阅读 · 0 评论 -
RabbitMQ基本概念与安装教程
RabbitMQ1、RabbitMQ的概念2、四大核心概念2.1 生产者2.2 交换机2.3 队列2.4 消费者3、RabbitMQ核心部分4、各个名词介绍5、RabbitMQ的安装教程5.1 官方网址:5.2 将安装文件下载1、RabbitMQ的概念RabbitMQ 是一个消息中间件:它接受并转发消息。你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快递送到收件人那里,按照这种逻辑 RabbitMQ 是一个快递站,一个快递员帮你传递快件。RabbitMQ 与原创 2021-12-12 17:58:44 · 372 阅读 · 0 评论 -
消息队列(Message Queue)
消息队列1.1. MQ 的相关概念1.1.1. 什么是 MQ1.1.2. 为什么要用 MQ1.1.3 MQ的分类1.1.4. MQ 的选择1.1. MQ 的相关概念1.1.1. 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不原创 2021-12-12 17:32:42 · 419 阅读 · 0 评论