一、说明
本章节不是描述怎么搭建admin服务端和客户端,这个比较简单,本文主要记录自己在搭建过程中遇到的一个问题,用了一点时间处理。
二、背景
项目有一个数据采集的场景,有很多设备,需要采集数据到数据中心处理,这里用的java(springboot项目)写的采集数据的程序,整合了redis、rocketmq等,注意这里写出来的整合的依赖等下会是问题关键。
三、问题
问题一
一直困扰着我的是,我自己搭建一个干净的admin server和client,相互通讯非常正常,没有不在线的情况。但是用在公司正式项目中就出现了client不在线问题。
报错:Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: io.netty.handler.codec.DefaultHeadersImpl.<init>(Lio/netty/util/HashingStrategy;Lio/netty/handler/codec/ValueConverter;Lio/netty/handler/codec/DefaultHeaders$NameValidator;ILio/netty/handler/codec/DefaultHeaders$ValueValidator;)V
刚开始找不到方向,后来问ai,给我几个方向查找原因,我初步判断是netty的版本冲突。
接着在idea中安装了maven依赖树的插件,
然后看到项目中有很多依赖冲突(虽然项目启动正常,运行也正常),然后就发现,netty在好几个依赖中都存在,然后一个一个的解决。解决方式是统一netty的依赖(排除其他依赖中的netty)
比如:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.3.12.RELEASE</version>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-common</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-handler</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-transport</artifactId>
</exclusion>
</exclusions>
</dependency>
因为我依赖了rocketmq,包含了netty的依赖,还有其他地方也有,这里就不展示了,最终留下了rocketmq的依赖,然后打包测试,一切正常。
其实之前一直没有在意依赖冲突的问题,借这次机会,顺便把项目的依赖整理了下,对于一个有强迫症的人而言,项目编译连warn都不允许看到的人,整理后非常干净,很解压
问题二
在服务端查看客户端日志的时候,中文乱码。客户端部署在windows环境下,查看客户端本地日志都正常,没有出现中文乱码的问题。
虽然不影响功能,但是看着不舒服,暂时没有解决掉这个问题~~~~~有没有遇到过这个问题的同学,一起交流下~~~