惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
S
SegmentFault 最新的问题
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
阮一峰的网络日志
阮一峰的网络日志
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
博客园 - 【当耐特】
Recent Announcements
Recent Announcements
I
InfoQ
U
Unit 42
博客园_首页
GbyAI
GbyAI
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
D
DataBreaches.Net
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 聂微东
T
Tailwind CSS Blog
量子位

博客园 - Doyourself!

python 切换版本后 提示 无法在python 3.11(.venv)(D:/my_rag_bot/.venv/Scripts/python.exe)设置 python sdk,该sdk似乎无效 记录一次日志告警随着nacos文件动态刷新而失效的问题 多个WebMvcConfigurer配置Jackson2ObjectMapperBuilder不生效问题记录 自定义拦截器不生效问题记录 记录一次nginx能通但是请求一直不了的问题 idea远程连接并本地打包到远程服务器 记一次生产环境内存溢出记录 凤凰架构总结 sentinel接入记录 JVM虚拟机总结 记录一次首页优化的经历 使用sharding-jdbc做分库分表记录 使用druid自定义拦截器 记录一次 maven 子模块相互依赖导致的父模块无法动态升级的问题 'parent.relativePath' points at wrong local POM 雪花算法snowflakeIdWorker使用记录 全局调用链路traceId网关到业务层、feign调用统一问题记录 Spring Cloud 的ribbon的饥饿加载机制 打印mq异常消息记录 根据druid将慢sql通过钉钉的方式进行告警功能记录
rocketmq 启动后 在mq console界面的consumer的Quantity数量...
Doyourself! · 2026-02-12 · via 博客园 - Doyourself!

              这几天在迁移环境,把当前生产环境运行的一套代码新迁移到一套演练环境。但是遇到一个问题: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;

      重新启动生效了