事务消息
摘要:事务消息需要消息队列提供相应的功能才能实现,Kafka和RocketMQ都提供了事务相关功能。 以在电商平台上下单购物的场景为例: 订单系统要保证订单创建后一定能发消息通知到购物车系统。 首先,订单系统在消息队列上开启一个事务。然后订单系统给消息服务器发送一个“半消息”,这个半消息不是说消息内容不完
阅读全文
posted @
2023-03-29 17:52
zhengbiyu
阅读(225)
推荐(0) 编辑
消息压缩
摘要:什么情况适合使用压缩? 在使用压缩之前,首先你需要考虑,当前这个场景是不是真的适合使用数据压缩。 比如,进程之间通过网络传输数据,这个数据是不是需要压缩呢?我和你一起来对比一下: 不压缩直接传输需要的时间是: 传输未压缩数据的耗时。 使用数据压缩需要的时间是: 压缩耗时 + 传输压缩数据耗时 + 解
阅读全文
posted @
2023-03-29 17:35
zhengbiyu
阅读(30)
推荐(0) 编辑
如何保证消息顺序消费
摘要:全局严格顺序 如果业务必须要求全局严格顺序,就只能把消息队列数配置成 1,生产者和消费者也只能是一个实例,这样才能保证全局严格顺序。 局部有序 大部分情况下,我们并不需要全局严格顺序,只要保证局部有序就可以满足要求了。比如,在传递账户流水记录的时候,只要保证每个账户的流水有序就可以了,不同账户之间的
阅读全文
posted @
2023-03-29 17:21
zhengbiyu
阅读(220)
推荐(0) 编辑
消息模型
摘要:消息模型 RocketMq、JMQ模型分别为Broker、Topic、Queue。 Kafka:将Queue换成Partition。 消费者、MQ、生产者关系图 假设有一个主题 MyTopic,我们为主题创建 5 个队列,分布到 2 个 Broker 中。 假设我们有 3 个生产者实例:Produe
阅读全文
posted @
2023-03-29 17:19
zhengbiyu
阅读(48)
推荐(0) 编辑
保证消息不丢失
摘要:确保消息可靠传递 一条消息从生产到消费完成这个过程,可以划分三个阶段,为了方便描述,我给每个阶段分别起了个名字。 生产阶段: 在这个阶段,从消息在 Producer 创建出来,经过网络传输发送到 Broker 端。 存储阶段: 在这个阶段,消息在 Broker 端存储,如果是集群,消息会在这个阶段被
阅读全文
posted @
2023-03-29 16:51
zhengbiyu
阅读(6)
推荐(0) 编辑
防止消息重复消费
摘要:用幂等性解决重复消息问题 一般解决重复消息的办法是,在消费端,让我们消费消息的操作具备幂等性。 幂等(Idempotence) 本来是一个数学上的概念,它是这样定义的: 如果一个函数 f(x) 满足:f(f(x)) = f(x),则函数 f(x) 满足幂等性。 这个概念被拓展到计算机领域,被用来描述
阅读全文
posted @
2023-03-29 16:46
zhengbiyu
阅读(55)
推荐(0) 编辑