需求背景:近期做了一个业务需求,我们配置的消费消息的重试次数为5次,意思就是如果消息消费失败了还会接着消费,会重复消费5次,其中如果一条消息消费五次都没有成功的话,需要将这条消息发送到企业微信通知群。
设置重复消费的次数可以通过如下配置实现:
public class xxxConsumer implements RocketMQPushConsumerLifecycleListener {
@Override
public void prepareStart(DefaultMQPushConsumer consumer) {
// 设置最大重试次数
consumer.setMaxReconsumeTimes(5);
}
}
平时我们写消费端的代码都是这样写的:
public class xxxConsumer implements RocketMQListener<String> {
@Override
public void onMessage(String msg) {
//todo
}
}
这样写是没办法获取消息的重复消费次数的,
我们可以这样写:
public class xxxConsumer implements RocketMQListener<MessageExt>{
@Override
public void onMessage(MessageExt messageExt) {
//获取消息
String msg = new String(messageExt.getBody(), Charset.forName("UTF-8"));
//获取消息的消费次数
int consumerTimes = messageExt.getReconsumeTimes()
}
}