RocketMQ客户端消息确认机制

RocketMQ 的消息确认机制(ACK)是保障消息可靠性的核心机制,分为生产者发送确认和消费者消费确认两部分。以下是详细解析及关键源码分析:
在这里插入图片描述


一、生产者消息发送确认机制

1. 机制说明
  • 同步发送:生产者发送消息后阻塞等待 Broker 返回 SendResult,包含消息状态(SEND_OKFLUSH_DISK_TIMEOUT 等)。
  • 异步发送:通过回调函数 SendCallback 处理成功或异常。
  • 单向发送:不关心发送结果,无确认机制。
  • 重试机制:默认同步发送重试 2 次(可配置 retryTimesWhenSendFailed)。
2. 源码解析
  • 核心类DefaultMQProducerImpl
  • 关键方法sendDefaultImpl()
    private SendResult sendDefaultImpl(Message msg, final CommunicationMode communicationMode, ...) {
         
         
        // 选择消息队列(负载均衡)
        MessageQueue mq = this.selectOneMessageQueue(topicPublishInfo, lastBrokerName);
        // 实际发送逻辑
        sendResult = this.sendKernelImpl(msg, mq, communicationMode, ...);
        // 处理结果或异常,触发重试
    }
    
    • 发送结果处理:根据 communicationMode 处理同步/异步逻辑。
    • 异常处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值