我更改了我的消费组并开始消费,它默认从最后一个偏移量消费,这是正确的。
但是当我重新启动这个消费者时,它会使用历史消息,为什么它在第一次启动时不使用历史消息,而是第二次使用。
以及经纪人的抵消从3000到4000。
CONSUME_FROM_LAST_OFFSET
只对一个全新的消费组生效。
因此,对于您的第一次重新启动,您更改您的消费组(例如从 CG-A 到 CG-B),使其成为全新的消费组,然后它将按照您的预期从最后一个偏移量开始消费。
对于您的第二次尝试,在长时间离线后,您使用相同的消费 grop GC-B 重新启动您的实例,rocketmq 将从已记住的偏移代理消费,这实际上是按设计工作的。
因此,对于您想要跳过历史消息但仅从最后一个偏移量消费的场景,您可以
CONSUME_FROM_LAST_OFFSET
笔记
如果您使用的是广播消费者,其偏移量存储在本地文件中(与实例名称相关的文件路径)而不是代理,请指定您的实例名称
consumer.setInstanceName("YOUR_INSTANCE_NAME");
. 否则,每次重新启动时,实例名称都会更改(默认为进程 ID),因此消费者无法归档,因此每次重新启动时它可能会从最后一个偏移量消耗。