rocketMq设置消费者单线程消费

consumer.setConsumeThreadMax(1);
consumer.setConsumeThreadMin(1);

// 一个应用创建一个Consumer,由应用来维护此对象,可以设置为全局对象或者单例,ConsumerGroupName需要由应用来保证唯一
final DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(rocketMQConfig.getConsumerGroup());
consumer.setNamesrvAddr(rocketMQConfig.getNamesrvAddr());
// 订阅指定topic下tags分别等于TagA或TagC或TagD
//consumer.subscribe("Topic1", "TagA || TagC || TagD");
// 订阅指定topic下所有消息,注意:一个consumer对象可以订阅多个topic
consumer.subscribe(rocketMQConfig.getSmsReceiptTopic(), "*");
consumer.setVipChannelEnabled(false);
// 设置Consumer第一次启动是从队列头部开始消费还是队列尾部开始消费 如果非第一次启动,那么按照上次消费的位置继续消费
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);
//单线程处理设置最大线程,最小线程也要设置,不然启动报错
consumer.setConsumeThreadMax(1);
consumer.setConsumeThreadMin(1);
//默认msgs里只有一条消息,可以通过设置consumeMessageBatchMaxSize参数来批量接收消息
//MessageListenerOrderly一个线程一个队列顺序接收
consumer.registerMessageListener((MessageListenerOrderly) (msgs, context) -> {
    System.out.println(Thread.currentThread().getName() + " Receive New Messages: " + msgs);
    MessageExt msg = (MessageExt) msgs.get(0);
    String msgBody = new String(msg.getBody());
    //短信回执主题
    if (msg.getTopic().equals(rocketMQConfig.getSmsReceiptTopic())) {
        log.info("消费者接收到短信回执消息:[{}]", msgBody);
        httpSmsSvc.handleSmsReplyAndReport(msgBody);
    } else {
        log.error("出现意料之外的消息:[{}]", msg.toString());
    }
    return ConsumeOrderlyStatus.SUCCESS;
});
// Consumer对象在使用之前必须要调用start初始化,初始化一次即可
consumer.start();
System.out.println("Consumer Started.");
Runtime.getRuntime().addShutdownHook(new Thread(consumer::shutdown));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值