RocketMQ——Consumer篇:PULL模式下的消息消费(DefaultMQPullConsumer)

本文主要介绍了RocketMQ中DefaultMQPullConsumer的使用,包括如何启动消费者、获取队列消费进度以及如何拉取消息。在PULL模式下,首先通过fetchSubscribeMessageQueues获取MessageQueue,然后调用pullBlockIfNotFound方法拉取消息,同时讲解了fetchConsumeOffset方法用于获取队列的消费进度。
摘要由CSDN通过智能技术生成

1 应用层的使用方式

在应用层初始化DefaultMQPullConsumer类,然后调用该类的start方法启动Consumer;接下来的消费步骤如下:

1、调用DefaultMQPullConsumer.fetchSubscribeMessageQueues(String topic)方法,根据topic获取对应的MessageQueue(即可被订阅的队列),在该方法中最终通过调用MQAdminImpl.fetchSubscribeMessageQueues(String topic)方法从NameServer获取该topic的MessageQueue,大致逻辑如下:

1.1)调用MQClientAPIImpl.getTopicRouteInfoFromNameServer(String topic, long timeoutMillis)方法,其中timeoutMillis=3000,该方法向NameServer发送GET_ROUTEINTO_BY_TOPIC请求码获取topic参数对应的Broker信息和topic配置信息,即TopicRouteData对象;

1.2)遍历TopicRouteData对象的QueueData列表中每个QueueData对象,首先判断该QueueData对象是否具有读权限,若有则根据该QueueData对象的readQueueNums值,创建readQueueNums个MessageQueue对象,并构成MessageQueue集合;最后返回给MessageQueue集合;

1.3)若上一步构建的MessageQueue集合不为空,则返回给该集合,否则抛MQClientException异常;

2、调用 Defaul

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值