您可通过重置消费位点,按需清除堆积的或不想消费的这部分消息再开始消费,或直接跳转到某个时间点消费该时间点之后的消息(不论是否消费过该时间点之前的消息)。

注意事项

使用重置消费位点功能有以下注意事项:

  • 广播消费模式不支持重置消费位点。
  • 目前不支持指定 Message ID、Message Key 和 Tag 来重置消息的消费位点。
  • 当前在控制台上仅能重置 TCP 协议使用的 Group ID 的消费位点。

操作步骤

  1. 登录消息队列 RocketMQ 版控制台。在顶部菜单栏,选择地域(Region),如华东1(杭州)
  2. 实例列表页面,找到目标实例,在其操作列,单击详情
  3. 在左侧导航栏,单击Group 管理
  4. Group 管理页面,单击TCP 协议页签。
  5. 找到需要重置消费位点的 Group ID,在其操作列单击icon_more图标,然后在下拉菜单中,选择重置消费位点resetoffsetpath
  6. 重置消费位点对话框中,按需选择以下选项,然后单击确认执行消费位点重置。resetoffset
    • 清除所有堆积消息,从最新位点开始消费(2~3分钟生效,请勿重复执行。操作会导致应用所有消费者暂停消费2~3分钟,对延迟敏感业务谨慎使用。):若选择此项,该 Group ID 在消费该 Topic 下的消息时会跳过当前堆积(未被消费)的所有消息,从这之后发送的最新消息开始消费。

      对于程序返回reconsumeLater,即走重试流程的这部分消息来说,清除无效。

    • 按时间点进行消费位点重置:选择该选项后会出现时间点选择的控件。请选择一个时间点,这个时间点之后发送的消息才会被消费。

      可选时间范围中的起始和终止时间分别是该 Topic 中储存的最早的和最晚的一条消息的生产时间。不能选择超过可选时间范围的时间点。

常见问题排查

  • 我使用两种方式重置消费位点均失败,该怎么处理?
    1. 请确认是否为集群消费。广播模式不支持重置消费位点。
    2. 确认当前消费者是否在线。消费者必须在线才能重置消费位点。
    3. 确认 SDK 版本,SDK 版本过低也会导致此问题。建议升级 SDK 至最新版本,针对 TCP Java SDK,至少是 1.8.0.Final 及以上版本。详情请参见版本说明
  • 我重置消费位点是为了跳过之前堆积的消息,结果还有部分消息未重置,该怎么处理?

    如果选择的是清除所有堆积消息,从最新位点开始消费(2~3分钟生效,请勿重复执行。操作会导致应用所有消费者暂停消费2~3分钟,对延迟敏感业务谨慎使用。)方式重置消费位点,则不能清除重试队列里的消息。您可以选择使用按时间点进行消费位点重置方式进行重置,此方式没有这个限制。