随笔分类 - 课程笔记
摘要:消费者端如何接收有序消息 队列消费的两种模式 并发消费模式 当同一类消息被送入不同队列,且这些消息在处理上并不需要按时序消费时,可以考虑使用并发消费模式。 并发消费模式生产者会将消息轮询发送到不同的队列当中,这些队列会和消费者实例建立多个连接(线程)将消息并发送入到不同的消费者。因为消费者处理速度有
阅读全文
摘要:消费者基于自定义属性实现SQL过滤 在发送消息时,发送方可以自定义消息的用户属性,消费者可以利用SQL92的WHERE子句语法实现消息过滤。 相比Tag过滤,消息过滤使用更加灵活,也更容易被程序猿接受,但相较Tag过滤执行效率较低。 下面咱们来看案例: 消息生产者 com.itlaoqi.rocke
阅读全文
摘要:消费者基于Tag实现消息过滤 在发送消息时,需要设置消息的“标记Tag”,Tag用于说明消息的某项特征,消费者可以根据这个特征决定是否接收这些消息。 消息发送者 com.itlaoqi.rocketmq.tagfilter.TfProducer,下面案例模拟了来自“京东”、“天猫”、“淘宝”的电商模
阅读全文
摘要:集群消费模式与广播消费模式 环境准备 生产者CmProducer 生产者是一致的,循环生成10条普通消息投给给Broker,主题为:cm-sample-data ,Tag:test ,Key:n @Slf4j public class CmProducer { public static void
阅读全文
摘要:消费者概述 几个关键概念 消费者组:一个逻辑概念,在使用消费者时需要指定一个组名。一个消费者组可以订阅多个Topic。 消费者实例:一个消费者组程序部署了多个进程,每个进程都可以称为一个消费者实例。 订阅关系:一个消费者组订阅一个 Topic 的某一个 Tag,这种记录被称为订阅关系。 PS:Roc
阅读全文
摘要:白话设计模式 六大设计原则 开闭原则 Open-Close Principle,OCP 在⾯向对象编程领域中,开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的,但对于修改是封闭的。 开闭原则的核⼼思想也可以理解为⾯向抽象编程。 单⼀职责原则 单⼀职责原则(Single Responsibi
阅读全文
摘要:RocketMQ发送消息之事务消息 先写库还是先发消息? 首先,咱们来看一下工作场景,订单ID1030被创建后要保存到数据库,同时该1030订单通过MQ投递给其他系统进行消费。如果要保证订单数据入库与消息投递状态要保证最终一致,要怎么做? 这里有两种常见做法: 第一种,先写库,再发送数据 //伪代码
阅读全文
摘要:RocketMQ发送消息之延迟消息 延迟消息 延迟消息是指消息发送后,消费者要在一定时间后,或者指定某个时间点才可以消费。在没有延迟消息时,基本的做法是基于定时计划任务调度,定时发送消息。在 RocketMQ中只需要在发送消息时设置延迟级别即可实现。 Broker在启动时,内部会创建一个内部主题
阅读全文
摘要:RocketMQ 高可用 消息生产消费流程 Broker 即 MQ 服务器; NameServer 可理解为注册中心。 Broker 主挂了的情况 Broker 主从都挂了的情况 Broker 双主挂了的情况 NameServer 挂了的情况 下面这种情况可能需要人为干预: NameServ
阅读全文
摘要:RocketMQ消息发送之普通消息 架构拓扑 NameServer:192.168.31.103 Master:192.168.31.105 Slave:192.168.31.111 执行流程 Master与Slave启动向NameServer注册 生产者Producer发送数据前从NameServ
阅读全文
摘要:RocketMQ发送消息之有序消息 假设没有分区时有什么问题? 如果某一笔业务产分为多条普通消息同时发送,消费者无法保证按按生产者预期的顺序进行消费,进而导致代码逻辑错误。 分区有序消息 分区有序消息:与Kafka中的分区类似,把一个Topic消息分为多个分区“保存”和消费,在一个分区内的消息就是传
阅读全文
摘要:RocketMQ五种消息类型 普通消息:普通消息也称为并发消息,和传统的队列相比,并发消息没有顺序,但是生产消费都是并行进行的,单机性能可达十万级别的TPS。 分区有序消息:与Kafka中的分区类似,把一个Topic消息分为多个分区“保存”和消费,在一个分区内的消息就是传统的队列,遵循FIFO(先进
阅读全文
摘要:生产者启动流程与消息发送流程 生产者概述 发送消息的一方被称为生产者,它在整个RocketMQ的生产和消费体系中扮演的角色。 生产者组:一个逻辑概念,在使用生产者实例的时候需要指定一个组名。一个生产者组可以生产多个Topic的消息。 生产者实例:一个生产者组部署了多个进程,每个进程都可以称为一个生产
阅读全文
摘要:生产多Master多Slave环境部署实战 环境说明 NameServer 192.168.31.103 192.168.31.113 Broker-A Master:192.168.31.104 Slave:192.168.31.114 Broker-B Master:192.168.31.105
阅读全文