如何在 SpringBoot 项目中控制 RocketMQ消费线程数量

本文探讨了如何在SpringBoot项目中控制RocketMQ消费者的线程数量,包括理解RocketMQ的消息监听、消费线程池的工作原理,以及如何通过设置最小线程数来调整消费能力。此外,还提到了在SpringBoot环境下修改消费者线程数的方法。
摘要由CSDN通过智能技术生成

9d5c471f29f31a51375a1e727aca148c.png

1

   

背景

最近在新项目开发中遇到一个有趣的问题,如何在 SpringBoot 项目中控制 RocketMQ 消费线程数量。如何设置单个 topic 消费线程的最小数量和最大数量,用来区分不同 topic 吞吐量不同。

我们先介绍一下 RocketMQ 消息监听再来说明 RocketMQ 消费线程。

2

   

RocketMQ 消息监听

设置消费者组为 my_consumer_group,监听 TopicTest 队列,并使用并发消息监听器MessageListenerConcurrently

1public class Consumer {
 2
 3    public static void main(String[] args) throws InterruptedException, MQClientException {
 4        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("my_consumer_group");
 5        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
 6        consumer.subscribe("TopicTest", "*");
 7        consumer.setNamesrvAddr("name-server1-ip:9876;name-server2-ip:9876");
 8        consumer.registerMessageListener(new MessageListenerConcurrently() {
 9            @Override
10            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
11                ConsumeConcurrentlyContext context) {
12                System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
13                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
14            }
15        });
16        consumer.start();
17        System.out.printf("Consumer Started.%n");
18    }
19}

3

   

RocketMQ 中连接结构图

e7dee3027be63a6550e48bc57c1977bd.png

4

   

消费监听器

接口:org.apache.rocketmq.client.consumer.listener.MessageListener

799ff659a3fb8080ad5da165189b0105.png

有两个子接口:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值