09 消息队列
文章平均质量分 87
Lamiaomiao
好好学习,天天向上
展开
-
06 MQ重复消费 顺序消费
重复发送消息,怎么保证消息不被重复消费呢? 让消费消息的操作具有幂等性,一个操作具有幂等性是指这个操作任意多次执行所产生的影响与一次执行的影响相同。具体的实现有: 利用数据库的唯一约束实现幂等 每当要消费一条消息时,就先将其插入到数据库中,由于唯一性约束,相同的消息只会被插入一次。 利用redis的SETNX命令也可以 你是怎么保证消息按顺序消费? RocketMQ一个topic可以有多个分区,它可以分区中顺序消费,但是不能保证每个topic顺序消费,如果想要保证每个topic顺序消费的话,那么就只为一原创 2020-08-10 13:54:03 · 277 阅读 · 0 评论 -
05 MQ高可用
重复发送消息,怎么保证消息不被重复消费呢? 让消费消息的操作具有幂等性,一个操作具有幂等性是指这个操作任意多次执行所产生的影响与一次执行的影响相同。具体的实现有: 利用数据库的唯一约束实现幂等 每当要消费一条消息时,就先将其插入到数据库中,由于唯一性约束,相同的消息只会被插入一次。 利用redis的SETNX命令也可以 你是怎么保证消息按顺序消费? RocketMQ一个topic可以有多个分区,它可以分区中顺序消费,但是不能保证每个topic顺序消费,如果想要保证每个topic顺序消费的话,那么就只为一原创 2020-08-10 13:52:16 · 118 阅读 · 0 评论 -
04 MQ消息积压怎么处理
消息积压你是怎么处理的? 设计系统时,要保证消费端的消费性能要高于生产者的发送性能,这样系统才能健康持续运行。 消息积压产生的原因有2种:第一是消息生产速度过快,另一种是消息消费速度变慢。可以通过查看消息队列内置的监控数据,确定是生产端还是消费端的原因。 如果是消费端的原因,就进行消费端性能优化: 首先可以优化消费业务逻辑,尽量减少冗余。还可以增加消费端的并发数,也就是扩容Consumer实例,也必须同步扩容主题中的队列数量,确保Consumer的实例数量和队列数量相等。 如果是有大促或者抢购导致消息突增原创 2020-08-10 13:51:45 · 1251 阅读 · 0 评论 -
03 MQ怎么保证消息不丢失
检测消息是否丢失的办法 可以利用消息队列的有序性来验证是否有消息丢失。Producer端在发消息时给每个消息附加一个连续递增的序号,然后在Consumer端来检查这个序号的连续性来判断是否有消息丢失,还可以通过缺失的序号来判断丢的是哪条消息。 但是要注意的是像Kafka和RocketMQ这样的消息队列,是不保证在topic上的有序的,只能保证分区上是有序的,所以再发消息时必须指定分区并按区分别编号,并且检测时也要分区单独检测消息的连续性。 RocketMQ如何保证消息不丢失的?如何保证可靠性的? 一条消原创 2020-08-10 13:51:12 · 165 阅读 · 0 评论 -
02 MQ模型 事务消息
消息队列模型: ①队列模型(点对点):生产者-消费者,一条消息只能被一个消费者消费到 ②发布订阅模型:发布者-订阅者。 RocketMQ模型(Kafka模型也是一样的) RocketMQ中有生产者、消费者、主题等概念,每个主题可以包含多个队列,通过多个队列来实现并行生产和消费。这种情况下,只能在队列上保证消息的有序性,在主题层面无法保证消息顺序消费。 RocketMQ中使一条消息能被多个消费者消费是通过消费组来实现的。在一个消费组中的多个消费者不能消费同一条消息,(同一个组内的消费者是竞争消费关系)但是一原创 2020-08-10 13:50:38 · 222 阅读 · 0 评论 -
01 MQ作用、种类、选型
为什么要使用消息队列?消息队列的好处?用途? 消息队列用来解决系统之间的通信问题,主要功能就是收发消息,使用消息队列有几个好处: 解耦:减少了系统之间的依赖关系,如果在一个系统A中直接调用另一个系统B的接口,如果B执行失败,A也会执行失败,两个系统高度耦合,不利于代码的扩展和维护。 异步:提高系统响应速度,减少用户的等待时间。举例:假设我现在有一个下单功能,它包含了锁定库存,订单入库,给用户发短信3个操作,需要等这3个操作完成后才能给用户返回结果,用户需要等待较长的时间。我可以这样优化,在我这个下单功能中原创 2020-08-10 13:49:48 · 114 阅读 · 0 评论