RocketMq源码分析之DefaultLitePullConsumer主动拉取消息分析consumeRequestCache

RocketMq源码分析之DefaultLitePullConsumer主动拉取消息分析consumeRequestCache

因为做RMQ的proxy的消费者的时候,消息消费只能主动拉取,然后就想去研究下RMQ中主动拉消息的消费者的源码,开始在网上搜到的都是讲DefaultMQPullConsumer的,然后我用的是RocketMq4.8.0的版本,在4.8中,这个类被标记为将要废弃,将被DefaultLitePullConsumer替代,于是今天就咱们就研究下DefaultLitePullConsumer.

和普通push模式的消费者一样是创建好对象,然后start,它的区别是需要主动去拿消息,然后去消费.

这里面又有两种拉取消息的方式,一种是assign,一种是subscribe.

assign是指定哪些队列去拉取,subscribe是只指定topic,然后由均衡策略去所有队列中选择队列拉取

这是subscribe

        DefaultLitePullConsumer litePullConsumer = new DefaultLitePullConsumer("lite_pull_consumer_test");
        litePullConsumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
        litePullConsumer.subscribe("TopicTest", "*");
        litePullConsumer.start();
        try {
   
            while (running) {
   
                List<MessageExt> messageExts = litePullConsumer.poll();
                System.out.printf("%s%n", messageExts);

            }
        } finally {
   
            litePullConsumer.shutdown();
        }

这是assign

        DefaultLitePullConsumer litePullConsumer = new DefaultLitePullConsumer("please_rename_unique_group_name");
        litePullConsumer.setAutoCommit(false);
        litePullConsumer.start();
        Collection<MessageQueue> mqSet = litePullConsumer.fetchMessageQueues("TopicTest");
        List<MessageQueue> list = new ArrayList<>(mqSet);
        List<MessageQueue> assignList = new ArrayList<>(
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值