protobuf对象序列化问题一

今天在项目中遇到一个奇葩问题。问题描述:项目基于dubbo服务做的模块多个项目模块通过maven构建依赖,其中有几个模块一个是算法转换服务A另一个模块是通用配置模块B,一个是config服务C。他们通过接口相互依赖,A在调用C服务redis存取服务把对象序列化和反序列化存放到redis中其中序列化对象在B模块中是没有问题但是在C服务上的对象序列化就存在问题取出的对象始终是HashMap这就奇怪了,在把一个对象序列化到Redis存储其中对象序列化使用protobuf对象序列化和反序列化。这里存在的问题分析:protobuf在对象序列化的时候最终转换为byte存放redis中,在反序列化的时候由于protobuf找不到反序化的类类型,这里为了保证能够反序列化成功protobuf把对象值取出最终以HashMap的key和value存放值。为了解决此问题最好是在序列化和反序列化时需要让protobuf知道我们的对象类型,这就需要把相应的序列化对象引入到相应序列化项目包中我们通过maven依赖。