自顶向下学习 RocketMQ(九):回溯消费

定义

回溯消费是指 Consumer 已经消费成功的消息,由于业务上需求需要重新消费,要支持此功能,Broker 在向 Consumer 投递成功消息后,消息仍然需要保留。并且重新消费一般是按照时间维度,例如由于 Consumer 系统故障,恢复后需要重新消费 1 小时前的数据,那么 Broker 要提供一种机制,可以按照时间维度来回退消费进度。RocketMQ 支持按照时间回溯消费,时间维度精确到毫秒。

Demo

我们仍然是利用 Spring Cloud Stream 的编程模型 + Spring Cloud Alibaba RocketMQ 来实现。

理论

在消费时,可以设置一个字段 ConsumeFromWhere(源码位置在:org.apache.rocketmq.common.consumer.ConsumeFromWhere),从哪开始消费。可选参数,去掉 Deprecated 的,剩下的就是

public enum ConsumeFromWhere {
   
  CONSUME_FROM_LAST_OFFSET,
  CONSUME_FROM_FIRST_OFFSET,
  CONSUME_FROM_TIMESTAMP,
}
  • CONSUME_FROM_LAST_OFFSET:从最后的偏移量开始消费
  • CONSUME_FROM_FIRST_OFFSET:从最小偏移量开始消费
  • CONSUME_FROM_TIMESTAMP:从某个时间开始消费

我们需要设置从某个时间开始消费,即配置 CONSUME_FROM_TIMESTAMP 并设置好具体的时间点。

实现

首先还是看一下配置文件

server:
  port: 8080
  servlet:
    context-path: /mq-example

spring:
 
  application:
    name: mq-example
  cloud:
    stream:
      bindings:

        input-backtracking:
          content-type: application/json
          destination: test-topic3
          group: backtracking-consumer-group

        # 定义 name 为 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值