RocketMq知识记录整理

一 文件过期策略详解

默认情况下,无论是正常消息还是死信队列中的消息。都可能在3天后被清除
参考:RocketMQ文件过期策略详解

二 读写分离注意点

默认不支持读写分离
参考:RocketMQ 主从同步读写分离机制

注意点

  1. rocketmq只保证消息至少被消费一次,所以消费进度如果有问题(也只可能往前退了)
    ,也只是重复消费.所以我觉得消费进度即使丢失了部分,也问题不大
  2. 数据如果想保证安全,只能使用同步刷盘机制。如果使用异步刷盘+同步复制策略,当主节点宕机重启后,数据可能会落后于从节点

三 消费组说明

和之前学过的activemq不同。rocketmq里面有许多新概念,因为实现并没有遵循某个协议。

消费组:就是多个消费者的集合。在默认情况下(MessageModel.CLUSTERING)下,整个组内的消费者共享这个主题下的所有队列(队列里面就是消息,当然也就共享所有消息)。一个队列只能被一个消费者实例消费,但一个消费者实例可以消费多个队列

所以消费者数量不要多余队列数,否则空闲的几个也发挥不了作用

四 广播模式

广播模式下,一个主题的所有消费者都能受到消息。而且如果广播时如果消费者离线了,之后上线时还是能接收到消息(和activemq的默认效果不一样

并且我在本地测试时,总是能从上次消费的offset之后开始继续消费。(因为客户端和server端都有消费组的消费进度文件)

因为不太熟悉这个模式,个人不是太推荐这种用法。而且两个消费组也能实现一些场景下的广播效果

五 消费进度

broker和consumer都保存
参考:RocketMQ源码分析----Consumer消费进度相关

六 新增消费组时从哪消费

consumer可以调用setConsumeFromWhere方法设置。

这里也有许多注意点:如何存储队列位置信息

七 顺序消费

我理解的顺序是指消息在时间上的消费顺序。和具体被哪个消费者消费无关

实现参考:如何解决MQ消息消费顺序问题

注意阻塞问题/重复问题
在这里插入图片描述

发布了107 篇原创文章 · 获赞 1 · 访问量 3941

猜你喜欢

转载自blog.csdn.net/m0_38060977/article/details/104886787