李华照 2022-04-13 17:30
浏览 31
已结题

RocketMQ消费失败

问题遇到的现象和发生背景

当消费 msgs 数组时, 处理其中一条消息报错。如果返回ConsumeOrderlyStatus.RECONSUME_LATER, 那么数组其它的消息怎办?都被retry吗?

假如,msgs有3条消息, 处理第1条成功,第2条时,失败了,返回了RECONSUME_LATER。
那么问题来了, 问题1) 3条消息都重试,那么第1条已经处理过了,(例如已入库, 要作幂等性控制?) 问题2)第3条 会被错杀? 问题3, 第3条重试时,也许再次被错杀

问题相关代码,请勿粘贴截图
   consumer.registerMessageListener(new MessageListenerOrderly() {

       Random random = new Random();

       @Override
       public ConsumeOrderlyStatus consumeMessage(List<MessageExt> msgs, ConsumeOrderlyContext context) {
           context.setAutoCommit(true);
           for (MessageExt msg : msgs) {
               try {
                   //模拟业务逻辑处理中...
               TimeUnit.SECONDS.sleep(random.nextInt(10));
               } catch (Exception e) {
                   e.printStackTrace();
                    return ConsumeOrderlyStatus.RECONSUME_LATER;
               }
           }

           return ConsumeOrderlyStatus.SUCCESS;
       }
   });
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 4月21日
    • 创建了问题 4月13日

    悬赏问题

    • ¥15 用verilog实现tanh函数和softplus函数
    • ¥15 Hadoop集群部署启动Hadoop时碰到问题
    • ¥15 求京东批量付款能替代天诚
    • ¥15 slaris 系统断电后,重新开机后一直自动重启
    • ¥15 QTableWidget重绘程序崩溃
    • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
    • ¥15 关于vue2中methods使用call修改this指向的问题
    • ¥15 idea自动补全键位冲突
    • ¥15 请教一下写代码,代码好难
    • ¥15 iis10中如何阻止别人网站重定向到我的网站