SpringBoot项目整合RocketMQ启动失败的常见错误总结

SpringBoot项目整合RocketMQ启动失败的常见错误总结

❃博主首页 :「程序员1970」 ,同名公众号「程序员1970」
☠博主专栏 :<mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关>


文章目录

一、日志框架配置问题

1. RocketMQ日志框架未正确配置

报错内容

RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.InternalThreadLocalMap). RocketMQLog:WARN Please initialize the logger system properly. 

原因
RocketMQ默认使用自己的日志框架,未与SpringBoot的Slf4j集成。

解决方案
在启动类中添加:

System.setProperty("rocketmq.client.logUseSlf4j","true");

并在配置文件中添加:

logging:level:RocketmqClient: ERROR io:netty: ERROR 

二、版本兼容性问题

1. SpringBoot版本过低

报错内容

Caused by: java.lang.ClassNotFoundException: org.apache.rocketmq.client 

原因
SpringBoot 1.x版本与RocketMQ 2.0.4不兼容。

解决方案
将SpringBoot版本升级到2.1.0.RELEASE或更高版本。

2. RocketMQ与SpringBoot版本不匹配

报错内容

The following dependencies have a problem: - rocketmq-spring-boot-starter: 2.0.4 - spring-boot-starter: 1.5.9.RELEASE 

原因
RocketMQ客户端与SpringBoot版本不兼容。

解决方案
检查并确保使用的RocketMQ版本与SpringBoot版本兼容(参考官方文档推荐组合)。

三、依赖冲突问题

1. 依赖冲突导致启动失败

报错内容

Caused by: java.lang.NoClassDefFoundError: org/apache/rocketmq/client/producer/DefaultMQProducer 

原因
依赖库之间存在版本冲突。

解决方案

  1. 使用mvn dependency:tree检查依赖树
  2. 在pom.xml中明确指定版本:
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.4</version><!-- 排除冲突的依赖 --><exclusions><exclusion><groupId>com.google.guava</groupId><artifactId>guava</artifactId></exclusion></exclusions></dependency>

四、自动装配配置缺失

1. RocketMQTemplate无法自动注入

报错内容

Field rocketMQTemplate in com.sks.crm.service.RocketMQProducerService required a bean of type 'org.apache.rocketmq.spring.core.RocketMQTemplate' that could not be found. 

原因
SpringBoot 3.0+已放弃spring.plants自动装配机制。

解决方案
在resources下创建META-INF文件夹,然后在META-INF下创建org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,并添加:

org.apache.rocketmq.spring.autoconfigure.RocketMQAutoConfiguration 

五、RocketMQ服务配置问题

1. NameServer地址配置错误

报错内容

org.apache.rocketmq.client.exception.MQClientException: No route info of topic: test-topic, please make sure you have created the topic first. 

原因
RocketMQ配置的NameServer地址不正确。

解决方案
检查配置文件中rocketmq.name-server是否正确,确保NameServer已启动且可访问。

2. 磁盘空间不足

报错内容

org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14 DESC: service not available now. It may be caused by one of the following reasons: the broker's disk is full [CL:0.92 CQ:0.92 INDEX:0.92], messages are put to the slave, message store has been shut down, etc. BROKER:169.254.87.77:10911 

原因
RocketMQ Broker所在服务器磁盘空间不足。

解决方案

  1. 清理磁盘空间
  2. 修改runbroker.cmd文件,增加:
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn128m -Drocketmq.broker.diskSpaceWarningLevelRatio=0.99" 

六、消费者组配置问题

1. 消费者组已存在

报错内容

Caused by: org.apache.rocketmq.client.exception.MQClientException: The consumer group[my-consumer] has been created before, specify another name please 

原因
同一个消费者组名已在RocketMQ中创建,重复使用。

解决方案
确保每个消费者组名是唯一的,不要重复使用。

七、配置文件格式问题

1. 配置文件格式错误

报错内容

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'rocketMQTemplate' defined in class path resource [org/apache/rocketmq/spring/autoconfigure/RocketMQAutoConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.rocketmq.spring.core.RocketMQTemplate]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: rocketmq.name-server is required. 

原因
配置文件中缺少必要的RocketMQ配置项。

解决方案
确保配置文件包含必要的RocketMQ配置:

rocketmq:name-server: 127.0.0.1:9876producer:group: my-group consumer:group: my-consumer 

八、ACL认证配置问题

1. ACL认证配置缺失

报错内容

org.apache.rocketmq.client.exception.MQClientException: Access denied, the topic 'test-topic' is not allowed to be accessed by the client 

原因
RocketMQ开启ACL认证,但客户端未配置AccessKey和SecretKey。

解决方案
在配置文件中添加:

rocketmq:producer:access-key: AK secret-key: SK 

或在消费者注解中指定:

@RocketMQMessageListener( topic ="test-topic", consumerGroup ="my-consumer", accessKey ="AK", secretKey ="SK")

关注公众号获取更多技术干货 !

Read more

Flutter 三方库 shorebird_redis_client 鸿蒙适配交互分布式字典引擎栈:以 RESP 总线桥接高负载实时网关建立穿透防御状态共享网络-适配鸿蒙 HarmonyOS ohos

Flutter 三方库 shorebird_redis_client 鸿蒙适配交互分布式字典引擎栈:以 RESP 总线桥接高负载实时网关建立穿透防御状态共享网络-适配鸿蒙 HarmonyOS ohos

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 shorebird_redis_client 接驳鸿蒙超速交互分布式字典引擎栈适配:以 RESP 通信总线桥接高负载实时网关建立千万级穿透防御状态共享网络 前言 在 OpenHarmony 全场景应用开发中,面对大规模的高并发数据处理(如分布式排行榜、实时消息队列、或者是跨终端同步的缓存状态),传统的各种本地 SQL 数据库往往在灵活性和读写延迟上难以满足“毫秒级”响应的需求。shorebird_redis_client 为 Flutter 开发者提供了一套高性能、专注于极致速度的 Redis 客户端访问方案。本文将带大家在鸿蒙端实战适配这一“内存级”数据底座。 一、原直线性 / 概念介绍 1.1 基础原理/概念介绍 shorebird_redis_client 的核心逻辑是基于

By Ne0inhk
在 DBeaver 等数据库客户端中是可以编写和执行存储过程 / 函数的,因为它们本质上只是 SQL 脚本的集合

在 DBeaver 等数据库客户端中是可以编写和执行存储过程 / 函数的,因为它们本质上只是 SQL 脚本的集合

在 DBeaver 等数据库客户端中是可以编写和执行存储过程 / 函数的,因为它们本质上只是 SQL 脚本的集合,你只需要在查询编辑器里编写 CREATE PROCEDURE 或 CREATE FUNCTION 语句,再执行即可。 下面我将为你详细讲解如何在 DBeaver 中创建、修改和执行存储过程与函数,并提供具体的示例。 1. 前提条件 确保: * 你已经通过 DBeaver 成功连接到了 MS SQL Server 数据库。 * 你所使用的数据库用户拥有 CREATE PROCEDURE 和 CREATE FUNCTION 的权限。 2. 创建存储过程 (Stored Procedure) 在 MS SQL Server 中,存储过程可以有输入参数(IN)、输出参数(OUT)

By Ne0inhk
RabbitMQ - 消费端限流机制:QoS 参数的配置与使用

RabbitMQ - 消费端限流机制:QoS 参数的配置与使用

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕RabbitMQ这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * RabbitMQ - 消费端限流机制:QoS 参数的配置与使用 * 什么是 QoS(服务质量)? * QoS 的工作原理 🔄 * QoS 参数详解 📊 * prefetch_count 参数 * global 参数 * prefetch_size 参数 * Java 客户端中的 QoS 配置 💻 * 基础配置示例 * 多消费者场景下的 QoS 配置 * QoS 与消息确认模式的关系 🔗 * 自动确认模式 vs 手动确认模式 * 自动确认模式(不支持 QoS 限流) * 手动确认模式(

By Ne0inhk
Spring Cloud 熔断降级详解:用 “保险丝“ 类比,Sentinel 实战教程

Spring Cloud 熔断降级详解:用 “保险丝“ 类比,Sentinel 实战教程

欢迎文末添加好友交流,共同进步! “ 俺はモンキー・D・ルフィ。海贼王になる男だ!” * 📋 目录 * 什么是熔断降级 * 定义 * 为什么需要熔断降级? * 保险丝类比:形象理解熔断机制 * 生活中的保险丝 * 熔断器工作原理对比 * 熔断器三种状态 * Sentinel 核心概念 * 什么是 Sentinel? * 核心概念对比 * Sentinel vs Hystrix 对比 * Sentinel 实战教程 * 环境准备 * 1. 添加依赖 * 2. 配置文件 * 基础示例:注解方式 * 3. 主启动类 * 4. 创建订单服务 * 5. 控制器 * 高级配置:规则定义 * 6. 流控规则配置 * OpenFeign 集成 * 7. Feign客户端集成Sentinel * 8. Feign降级处理 * 规则持久化(

By Ne0inhk