RocketMQ-Consumer消费流程
2019-09-23 18:25:59 0 举报
RocketMQ-Consumer消费流程
作者其他创作
大纲/内容
org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl#pullMessagepullMessage(final PullRequest pullRequest)
org.apache.rocketmq.client.impl.consumer.PullMessageService线程死循环
拉取回调中执行ConsumeMessageConcurrentlyService#submitConsumeRequest
将消息封装成任务放入线程池,run方法中会执行绑定的监听方法,如果返回成功,则将Consumer端维护的偏移量加1,每隔5s向Broker同步一次,
消方息处理:当设置的监听方法返回成功:当前队列偏移量加1返回失败、NULL、抛异常 都是按失败处理,失败:就会把消息发给Broker ,topic为%RETRY%+consumergroup同时偏移量加1,如果在处理失败 就再发送给Broker,16次后 消息会被发送到死信队列 (需要人工干预)如果给Broker 发送消息失败:则 会定时在5秒后重新消费该消息偏移量也不会改变
consumeExecutor核心线程:20最大线程:64超时时间:1分钟队列:LinkedBlockingQueue无界队列
Consumer端消息的入口NettyClientHandler#channelRead0
PullRequest 包括了消息及消息的队列信息
0 条评论
下一页