跟着大宇学RabbitMQ
文章平均质量分 91
故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。
小大宇
能与优秀的人为伍自然就会变优秀
展开
-
跟着大宇学RabbimtMQ目录贴
与君共勉 故不积跬步,无以至千里。不积小流,无以成江海。骐骥一跃不能十步,驽马十驾功在不舍。 谁都是从HelloWorld开始学习的,即使是架构师,也是一样。从头开始学RabbimtMQ目录贴第一节 RabbitMQ生产者消费者第二节 Fanout路由交换机:订阅发布模式第三节 Direct路由交换...原创 2020-11-10 15:11:33 · 1710 阅读 · 1 评论 -
第十节 死信队列
一、基本功能 场景一:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单。 场景二:转账申请提交了,预计2小时内到账。 从上述常见的场景一开始入手。 从下订单(未付款)开始,这个订单,可以视为一种消息,就进入死信队列。进入死信队列的特点就是消息有时间限制。 如果这个订单30分钟后还没有付款,那么这个...原创 2022-02-22 19:46:14 · 3468 阅读 · 0 评论 -
第八节 使用RabbitMQ异步解耦(提高性能)
一、基本思路 假设我们有一个"更新用户"的业务,此业务需要花费1秒钟时间。 然后需要为当前系统"记录日志",日志需要记录用户操作的方法名以及模块名称,此操作需要花费3秒。 上述两个步骤在同步情况下(主线程顺序执行)需要 1+3 = 4秒。如果将"记录日志"的操作从"更新用户"的业务中异步解耦出来,即"记录日志"交给消息中间件使用另外一个线...原创 2022-02-22 19:46:26 · 4866 阅读 · 4 评论 -
第七节 用户商城抢单并发实战(流量削峰实战)
一、基本思路 数据库有一张商品表,库存量是100。现在有1000个消费者准备开抢这100个库存。 t_product表维护商品编号与商品库存剩余数量。编号No123321的这种商品的库存量有100个。 t_product_record维护抢到商品的用户ID。理论上t_product表开抢后的 记录数量应该是100条(共有100个人抢到...原创 2022-02-22 19:46:41 · 3488 阅读 · 4 评论 -
第六节 SpringBoot集成RabbitMQ综合运用(SSM框架集成RabbitMQ)
先展示当前项目的效果 RabbitMQ一般不会单独使用。今天分享的是如何在基于SpringBoot的SSM框架中 集成RabbitMQ。 点击下方图片,可以查看清晰效果图核心配置 (1)队列、Exchanger路由器交换机、路由键的名字由SpringBoot的配置文件维护。使用注解注入配置中的值。@Value("${queue.name")...原创 2019-04-25 16:01:41 · 1186 阅读 · 1 评论 -
第五节 SpringBoot简单集成RabbitMQ
安装RabbitMQ 参考链接:windows下 安装 rabbitMQ 及操作常用命令 RabbitMQ入门(一)——RabbitMQ的安装以及使用(Windows环境下)一、导入依赖 首先创建一个基本的SpringBoot项目后,导入RabbitMQ的依赖。 <depend...原创 2019-04-24 15:38:44 · 546 阅读 · 0 评论 -
第四节 Topic路由交换机:消息转发到关心话题的Queue
一、基本模型 P是生产者,是发消息的人。 X是topic类型的交换机。它会把消息的路由键取出来,与绑定它的队列做路由键匹配。如果队列关心的路由键能匹配上消息的路由键,则将这个消息投递到这个队列中。 Q1是一个队列,它是关心orange颜色的队列。 O2是一个队列,它是关心rabbit与lazy的队列。 C1是...原创 2019-04-24 11:09:01 · 739 阅读 · 0 评论 -
第三节 Direct路由交换机:队列使用路由键绑定交换机
一、基本模型 P是生产者,是消息的发出者。 X是direct类型的交换机,它负责接收生产者的消息,并根据路由键分发消息到指定的队列。 Q1和Q2是队列。Q1队列只会接收:消息路由键为orange的消息,Q2队列只会接收:消息路由键为black和green的消息。 C1和C2是消费者,它们负责从队列中获取消息并消费。 ...原创 2019-04-23 16:34:23 · 1413 阅读 · 0 评论 -
第二节 Fanout路由交换机:订阅发布模式
一、基本模型 P代表生产者,就是发消息的一方。 X代表的是路由器交换机,它负责接收发送者发送的消息并将消息转发到订阅它的所有队列上。 红色部分是队列。它如果对某个交换机感兴趣的话,那么就可以把自己绑定到这个交换机上,专业术语叫绑定。 交换机X在收到任何消息后,都会直接将消息分发给订阅它的队列。这相当于发布...原创 2019-04-23 11:29:55 · 925 阅读 · 0 评论 -
第一节 RabbitMQ生产者消费者
一、基本模型 P是就是生产者,就是生产出消息的一方。 队列就是传输媒介,可理解为邮局与邮递员。邮局会拿到写信人寄给它的信。然后邮局会派邮递员,把消息投递给收信人。 C是消费者,用于接收消息,可理解为收信人。 这就是最简单的消息模型。二、使用代码 首先运行接收端的代码,它是一个阻塞方法,会一直等待发送...原创 2019-04-23 08:41:34 · 1200 阅读 · 4 评论 -
【夯实RabbitMQ】MQ消息积压问题如何解决?
目录一、MQ消息积压问题二、解决方案一、MQ消息积压问题 产生原因有可能是消费端宕机 消费端消费能力不足 生产端发送流量过大二、解决方案 方案一:通常的解决方案就是增加消费端实例。说白了就是增加机器。如果出现线上事故,能申请多少机器就申请多少机器,争取在最短的时间内消费掉积压在MQ中的消息。 方案二:如果申请机器行不通,毕竟公司的机器是有限的,此时可以增加消费端的消费能力。在MQ的配置中配置"最大消费者数量"与"每次从队列中获取的消......原创 2020-11-09 17:23:23 · 19344 阅读 · 2 评论 -
【夯实RabbitMQ】如何保证消息的顺序性?
一、如何保证消息的顺序性? 数据中台服务器A发送 创建学生信息与 更新学生信息 两条消息。应用服务器B需要接受服务A的消息。接收到创建学生信息的消息就在表里创建一个学生记录。接受到更新学生的消息就更新学生基本信息。 如果B服务器部署了两台,服务A在很短的时间内发送了两条消息,那么服务B可能有一台做创建学生的操作,另外一台做更新学生的操作。那么就有可能发生,更新学生基本信息的操作早于创建学生基本信息的操作。这样的话更新就会失败。 这就牵扯到如何保证消息...原创 2020-11-06 17:46:42 · 3134 阅读 · 12 评论 -
【夯实RabbitMQ】消费端消息确认与重试机制
目录一、消费端消息确认机制二、消费端消息重试机制一、消费端消息确认机制 在SpringBoot中,消费端可以配置消息确认模式。共有3种。#acknowledge-mode.NONE:发送到消费端后就自动确认,消息被删除#acknowledge-mode.MANUAL:手动确认,必须要收到ack或者nack#acknowledge-mode.AUTO:程序在执行中,消息会保存,直到程序正常执行完或者抛出异常才删除消息spring.rabbitmq.listene...原创 2020-11-06 11:21:42 · 1205 阅读 · 0 评论 -
【夯实RabbitMQ】如何保证消息不被重复消费?如何保证消息可靠传输?
目录一、如何保证消息不被重复消费?二、如何保证消息可靠传输一、如何保证消息不被重复消费? 消息大部分情况下是要对数据库造成影响的。重复消费的问题解决办法要看具体的业务。 业务1:如果一条消息对应插入一条数据到数据库中,那么可以通过主键先查看数据库中是否已经插入了这条数据。 如果已经插入就不要重复插入了。可以通过为数据库中增加唯一索引的方式来控制重复插入。 或者更新一下数据库...原创 2020-10-29 14:59:30 · 3509 阅读 · 4 评论 -
【夯实RabbitMQ】为什么使用消息队列?消息队列有什么优点和缺点?
一、系统里为什么要用消息队列这个东西? 公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用 MQ 可能会很麻烦,但是你现在用了 MQ 之后带给了你很多的好处。 场景有很多,但是比较核心的有 3 个:解耦、异步、削峰。 解耦:看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃...... 公司实际业务场景。如何同步用户信息表。...原创 2020-10-28 11:03:11 · 856 阅读 · 0 评论