随笔分类 -  消息队列 / Rocket

摘要:一、产生原因 1. 生产消费速率不匹配 生产者速率过快:生产者持续以高吞吐量发送消息,超过消费者处理能力(生产者产生太快) 消费者处理能力不足:消费者处理逻辑复杂、效率低下或资源不足(生产者产生消息太快) 突发流量冲击:业务高峰期或促销活动导致消息量骤增(生产者产生消息太快) 2. 消费者端问题 消 阅读全文
posted @ 2025-07-05 09:55 CyrusHuang 阅读(63) 评论(0) 推荐(0)
摘要:重复消费场景 1 consumer 返回失败 public enum ConsumeConcurrentlyStatus { CONSUME_SUCCESS, RECONSUME_LATER; } 如果返回 ConsumeConcurrentlyStatus.RECONSUME_LATER,消息就会 阅读全文
posted @ 2025-07-05 09:54 CyrusHuang 阅读(30) 评论(0) 推荐(0)
摘要:RocketMQ 通过 多层级防护机制 防止消息丢失和保证可靠性,需从 生产者、Broker、消费者 三个环节综合配置 Producer 端防护 同步发送 + 同步刷盘/复制 // 同步发送(必须捕获异常) try { SendResult result = producer.send(msg); 阅读全文
posted @ 2025-07-05 09:52 CyrusHuang 阅读(12) 评论(0) 推荐(0)
摘要:推(Push)模式 特点 由 Broker 主动将消息推送给消费者 实时性较高,消息到达后立即推送给消费者 消费者需要设置监听器(MessageListener)来处理推送过来的消息 实现原理 RocketMQ 的 Push 模式实际上是基于Pull模式的封装,内部实现了一个长轮询机制: 消费者启动 阅读全文
posted @ 2025-07-04 18:19 CyrusHuang 阅读(41) 评论(0) 推荐(0)
摘要:集群(默认),消息被任一消费者消费即可,消费失败会进行消费重试 广播,Broker 把消息推送给所有订阅了 Topic 的消费者组,如果消费者组是多个,那么消息就会被多次消费,但是消费失败就失败了,不会进行消费重试 两个消费者组 每个组里边两个消费者 订阅了同一个topic。 现在来一条消息 这条消 阅读全文
posted @ 2025-07-04 17:46 CyrusHuang 阅读(197) 评论(0) 推荐(0)
摘要:生产者 DefaultMQProducer producer = new DefaultMQProducer("retry-producer-group"); producer.setNamesrvAddr("127.0.0.1:9876"); producer.start(); // 发送失败重试 阅读全文
posted @ 2025-07-03 15:41 CyrusHuang 阅读(55) 评论(0) 推荐(0)
摘要:Tag 过滤 发消息时:topic 用来确定队列,tag 不参与队列的选择,tag 会作为消息属性与消息一起存储在队列上 消费消息时:borker 会根据消息的 tag 把消息推送到对应的的消费者 生产者 发送两条消息,一条消息 tag 为 vip1,一条消息 tag 为 vip2 DefaultM 阅读全文
posted @ 2025-07-03 15:39 CyrusHuang 阅读(34) 评论(0) 推荐(0)
摘要:实现流程 创建生产者 创建一个事务监听器,实现 TransactionListener 接口和下面两个方法 executeLocalTransaction:执行本地事务,也就是要和发送消息同时成功业务处理 checkLocalTransaction:检查本地是服务是否成功 给生产者绑定事务监听器 生 阅读全文
posted @ 2025-07-03 15:36 CyrusHuang 阅读(23) 评论(0) 推荐(0)
摘要:顺序消息分类 全局顺序 所有消息严格按照发送顺序被消费。 通常只能使用一个队列(单队列),吞吐量受限。 分区顺序 按照某个业务 key(如订单ID、用户ID)发送到 相同的队列,只在该 key 范围内保持顺序。 多个 key 的消息可以并发消费,各自内部有序。 使用示例 Producer 生产者发送 阅读全文
posted @ 2025-07-03 13:46 CyrusHuang 阅读(47) 评论(0) 推荐(0)
摘要:使用示例 消费者没什么变化,和普通消费者一样,这里就不贴了 DefaultMQProducer producer = new DefaultMQProducer("ms-producer-group"); producer.setNamesrvAddr("127.0.0.1:9876"); prod 阅读全文
posted @ 2025-07-03 11:21 CyrusHuang 阅读(30) 评论(0) 推荐(0)
摘要:生产者 只发送一次,但还是多条消息,这些消息进入同一个队列 DefaultMQProducer producer = new DefaultMQProducer("batch-producer-group"); producer.setNamesrvAddr("127.0.0.1:9876"); p 阅读全文
posted @ 2025-07-02 15:37 CyrusHuang 阅读(49) 评论(0) 推荐(0)
摘要:单向发送 // 创建生产者,指定生产者组(oneway-producer-group) DefaultMQProducer producer = new DefaultMQProducer("oneway-producer-group"); // 指定 NameServer producer.set 阅读全文
posted @ 2025-06-29 16:57 CyrusHuang 阅读(68) 评论(0) 推荐(0)
摘要:部署架构图 Producer:生产者,负责发送消息到 Broker Consumer:消费者,负责消费 Broker 的消息 支持推(Broker 主动把消息推送给消费者)、拉(消费者根据配置定期向 Broker 获取消息)两种消费模式 支持集群(组下一个消费者消费消息)、广播(组下每个消费者都消费 阅读全文
posted @ 2024-10-11 12:49 CyrusHuang 阅读(181) 评论(0) 推荐(0)