rocketmq 启动后 在mq console界面的consumer的Quantity数量显示为0 问题记录

              这几天在迁移环境,把当前生产环境运行的一套代码新迁移到一套演练环境。但是遇到一个问题:mq在当前的生产环境,消费者和生产者是成功的,但是当部署到演示环境之后,mq的消费者手动创建后,在控制台界面Quantity的数量一直为0,导致无法消费topic的消息。

           

image

    类似这种的。

       刚开始想着是环境的问题,但是排查了半天,mq环境和其他环境也没看出有什么问题。唯一的区别是:这些显示未0的,创建的方式和不为0的,是不同的。一种是基于事件的方式,另外一种直接是基于springboot的 :

基于事件的方式:

image

 基于springboot方式的:

image

 

       两张方式在生产环境当前都是正常的,但是演示环境,springboot的这种方式就是不行,很是奇怪。

 

       然后我添加了启动日志,将rocketmq的topic/consumer这些基础信息打印了出来,发现也没问题,最终想到:rocketmq-springboot的这些基础信息是基于DefaultRocketMQListenerContainer里面的方式进入注册的,于是在这个类的启动方法上面都加上了debug:

   

image

 

 

image

 

 

 

 

image

 

     

image

     最后发现在这个类的启动方法:initRocketMQPushConsumer() 里面

RPCHook rpcHook = RocketMQUtil.getRPCHookByAkSk(this.applicationContext.getEnvironment(), this.rocketMQMessageListener.accessKey(), this.rocketMQMessageListener.secretKey());
最后得到的这个rpcHook 是null
再然后发现自己的nacos的 mq的 accessKey和 secretKey不是叫这个名字,但是 springboot注解方式是有默认的名称的,和nacos的不一致。而且 新的演示环境开启了TCL认证,但是我的springboot并没有写上,最终导致的。
修复版本很简单,就是配置上accessKey和secretKey
@Component
@RocketMQMessageListener(topic = "${rocketmq.topics.nlcTopic}", consumerGroup = "${rocketmq.consumer.nlpComsumer}",messageModel = MessageModel.CLUSTERING
 ,accessKey = "${rocketmq.accesskey}",secretKey = "${rocketmq.accessSecret}")

public class KnowledgeCallbackMessageConsumer implements RocketMQListener<MessageExt> {
    private static final Logger logger = LoggerFactory.getLogger(KnowledgeCallbackMessageConsumer.class);

    @Autowired
    private org.springframework.core.env.Environment env;

    @PostConstruct
    public void printConfig() {
        String topic = env.getProperty("rocketmq.topics.nlcTopic");
        String group = env.getProperty("rocketmq.consumer.nlpComsumer");
        String nameServer = env.getProperty("rocketmq.name-server"); // 或 rocketmq.nameServer

        logger.info("RocketMQ Consumer Config - Topic: {}, Group: {}, NameServer: {}",
                topic, group, nameServer);
    }

    private ObjectMapper objectMapper;

      重新启动生效了 

posted @ 2026-02-12 09:01  Doyourself!  阅读(29)  评论(0)    收藏  举报