RabbitMQ
▂新起点▂
愿你既能朝九晚五,又能浪迹天涯。
展开
-
RabbitMQ系列(六)如何保证消息的顺序性、消息不丢失、不被重复消费
整合MQ时,怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性?头大头大,问题一大堆,痛苦不已一致性问题:A系统处理完了直接返回成功了,人都以为你这个请求就成功了;但是问题是,要是BCD三个系统那里,BD两个系统写库成功了,结果C系统写库失败了,咋整?你这数据就不一致了。所以消息队列实际是一种非常复杂的架构,你引入它有很多好处,但是也得针对它带来的坏处做各种额外的技术方案和架构来规避掉,最好之后,你会发现,妈呀,系统复杂度提升了一个数量级,也许是复杂了10倍原创 2020-04-27 14:50:11 · 22773 阅读 · 7 评论 -
RabbitMQ系列(五)主题模式
主题模式相对于之前几种算是比较复杂了,简单来说,就是每个队列都有其关心的主题,所有的消息都带有一个“标题”(RouteKey),exchange 会将消息转发到所有关注主题能与 routeKey 模糊匹配的队列。在进行绑定时,要提供一个该队列关心的主题,如“#.sscai.#”表示该队列关心所有涉及 sscai 的消息(一个 routeKey 为 "club.sscai.tmax”的消息会被转发到该队列)。 "#”表示0个或若干个关键字,“”表示一个关键字。如“club.”能原创 2020-04-23 14:26:38 · 1314 阅读 · 0 评论 -
RabbitMQ系列(四)路由模式
两个队列消费者设置的路由不一样,接收到的消息就不一样。路由模式下,决定消息向队列推送的主要取决于路由,而不是交换机了。 该模式必须设置交换机,且声明路由模式 channel.exchangeDeclare(EXCHANGE_NAME, "direct");原创 2020-04-23 14:26:10 · 1075 阅读 · 0 评论 -
RabbitMQ系列(三)发布订阅模式
什么是发布订阅模式简单解释就是,可以将消息发送给不同类型的消费者。做到发布一次,消费多个。下面代码部分会展示邮件、短信的例子,通过绑定到一个交换机。例子门户网站,用户在注册完后一般都会发送消息通知用户注册成功(失败)。如果在一个系统中,用户注册信息有邮箱、手机号,那么在注册完后会向邮箱和手机号都发送注册完成信息(假设都发送)。原创 2020-04-23 14:25:05 · 1271 阅读 · 0 评论 -
RabbitMQ系列(二)确认模式
RabbitMQ的消息确认有两种。第一种是消费接收确认。这种是确认消费者是否成功消费了队列中的消息。第二种是消息发送确认。这种是用来确认生产者将消息发送给交换器,交换器传递给队列的过程中,消息是否成功投递。发送确认分为两步,一是确认是否到达交换器,二是确认是否到达队列。一:消费者确认消费者确认或者说消费者应答指的是RabbitMQ需要确认消息到底有没有被收到自动应答boolean autoAck = true;channel.basicConsume(QUEUE_NAME, au原创 2020-04-22 13:36:47 · 1556 阅读 · 0 评论 -
RabbitMQ系列(一)工作队列模式
简单队列有个缺点,简单队列是一一对应的关系,即点对点,一个生产者对应一个消费者,按照这个逻辑,如果我们有一些比较耗时的任务,也就意味着需要大量的时间才能处理完毕,显然简单队列模式并不能满足我们的工作需求,我们今天再来看看工作队列。工作队列模式一个消息生产者,一个消息队列,多个消费者。同样也称为点对点模式...原创 2020-04-21 16:00:06 · 1448 阅读 · 0 评论 -
RabbitMQ 入门及学习思路
适用的应用场景异步处理:例如短信通知、终端状态推送、App推送、用户注册等数据同步:业务数据推送同步重试补偿:记账失败重试系统解耦:通讯上下行、终端异常监控、分布式事件中心流量消峰:秒杀场景下的下单处理发布订阅:HSF的服务状态变化通知、分布式事件中心高并发缓冲:日志服务、监控上报Rabbit优势:解耦、异步、广播、削峰Rabbit劣势:系统可用性低、系统复杂度提高、一致性问题原创 2020-04-17 13:59:02 · 1686 阅读 · 1 评论