开发者社区 > 云原生 > 消息队列 > 正文

RocketMQ 消费如何不从最开始进行?

RocketMQ 消费如何不从最开始进行?
新的消费者组监听topic 给consumer.setConsumeFromWhere 这个属性设置ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET 看消费设置没生效还是从现存的消息最开始消费了。是还需要设置什么吗?

展开
收起
你鞋带开了~ 2024-03-06 08:11:49 49 0
3 条回答
写回答
取消 提交回答
  • 阿里云大降价~

    要让RocketMQ的消费者不从最开始进行消费,而是从最后一条消息开始消费,需要设置consumeFromWhere属性为ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET

    在RocketMQ中,消费者组的消费起点可以通过setConsumeFromWhere方法来设定。如果你希望新的消费者组从现有的最新消息开始消费,而不是从头开始,你应该在创建消费者实例后,调用setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET)。这样,消费者会从最后一个已提交的偏移量开始消费消息。

    具体操作步骤如下:

    1. 创建消费者实例:首先,你需要创建一个DefaultMQPushConsumer实例,并设置消费者组名称。
    2. 设置消费起点:然后,调用setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET)方法来设置消费者的消费起点。
    3. 订阅主题:接下来,使用subscribe方法订阅你想要消费的主题。
    4. 启动消费者:最后,调用start方法启动消费者。

    需要注意的是,如果消费者组是全新的,或者是新订阅了某个topic/queue,那么它会被认为是新消费者组,此时设置consumeFromWhere属性将会生效。如果消费者组之前已经存在并消费过该topic/queue,则设置可能不会立即生效,因为消费者会从上次消费的位置继续消费。

    此外,还有一些其他消费策略,如ConsumeFromWhere.CONSUME_FROM_TIMESTAMP,允许你从指定的时间戳开始消费。如果你的需求是只消费启动后发送到消息服务器的最新消息,那么使用ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET是正确的选择。

    请确保你的代码中正确设置了这个属性,并且检查是否有其他配置或逻辑影响了消费者的消费行为。如果问题依旧存在,可能需要进一步检查RocketMQ的版本和配置,或者查看日志以获取更多信息。

    2024-03-06 19:34:51
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在RocketMQ中,新消费者组的消费起点可以通过setConsumeFromWhere方法来设置。为了确保新的消费者组从队列的最后一个偏移量开始消费,而不是从头开始,您需要正确地配置消费者端的参数。以下是您可能需要执行的步骤:

    1. 创建消费者实例:创建一个DefaultMQPushConsumer实例,并设置消费者组名(consumer group)。
    2. 设置消费起点:使用setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET)来设置消费起点为队列的最后一个偏移量。
    3. 订阅主题:使用subscribe方法订阅您想要消费的主题(topic)。
    4. 注册消息监听器:注册一个消息监听器来处理消费到的消息。
    5. 启动消费者:调用start方法启动消费者实例。

    此外,如果您希望从指定的时间戳开始消费,可以使用setConsumeTimestamp方法来设置起始消费的时间戳。

    请注意,如果消费者组是全新的,或者对于新订阅的topic/queue而言是新的消费者组,那么这些设置将会生效。如果消费者组之前已经存在并且有消费过的消息,那么这些设置可能不会立即生效,因为RocketMQ会根据消费者的消费进度来进行消息的投递。

    总的来说,如果您发现设置没有生效,可能是因为消费者组之前已经有消费记录,或者是其他配置影响了消费起点的设置。建议检查消费者组的配置和历史消费记录,确保没有其他因素干扰消费起点的设置。

    2024-03-06 13:41:45
    赞同 展开评论 打赏
  • 如果真的不想要老的消息,可以直接重置位点,重置了,就可以从你想要的地方开始消费
    --此回答整理自钉群“群3-Apache RocketMQ 中国开发者钉钉群”

    2024-03-06 13:11:10
    赞同 展开评论 打赏

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载