oiulkjasdf 2018-12-12 09:44 采纳率: 0%
浏览 1601

关于RocketMq 的三个问题 Mq高级来看一下

1、如果某条消息 卡在 ack 机制中 ,下游消费者一直报错 。其他消息是会正常被消费掉,如果此时broker 宕机 那么重启后的broker 是不是 将会重新根据卡ack 机制的offSet 将 offSet后面的全部消息重新消费一遍?

2、能理解事物消息上游发送者的逻辑,但如果下游消费者 一直消费不成功,消息进入死信队列,那么一致性也是不可能保证的 。最终靠人肉运维最终一致性?

3、关于通用幂等的逻辑 见代码如下:

try {
    //业务唯一标识幂等
    Boolean add = redisApi.addNX(UUID));
    if(!add){
        logger.error(new Date() + " 消息重复消费.");
        //返回消息消费成功
        return OrderAction.Success;
    }

    //消费
    toService(msg);
    logger.info(new Date() + " 正常消费成功“);
    return OrderAction.Success;

} catch (Exception e) {
    redisApi.del(UUID);
    logger.error("消费失败重试",e);
    return OrderAction.Suspend;
}

这样有个问题 确实重复消费时ack 返回确认消费不消费。消费过程中 出现异常 catch住后redis删除 重试可以正常消费,但如果消费过程中 jvm 爆了 下次ack 超时重试的时候 redis里面是有值的 会被认为重复的消息 而实际消费没有成功不会再消费

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-21 01:55
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝