ZPY博客

SpringBoot整合RocketMQ之消费者重试

我们知道,在原生RocketMQ中,我们可以实现MessageListenerConcurrently接口的consumeMessage方法,然后在此方法中返回ReconsumerLater,或者 NULL,或者抛出异常,消息都会走重试流程,至多重试 16 次,如果重试 16 次后,仍然失败,则会进入死信队列。

但是在springboot中,我们只能实现RocketMQListener<MessageExt>接口的onMessage方法,而此方法是void型的,那么消费失败时如何重试呢?查找了很多资料,基本上都是原生的写法,在springboot中的写法都没有写重试的代码,这让我很疑惑,不可能说原生的可以重试而到了springboot的写法中就不行了对吧?

终于在rocketmq的github上的issue中找到了答案,原来这里默认就是消费者处理时抛出异常时就会自动重试!好吧,测试后发现确实是这样。