一、该问题的重现步骤是什么?
1. 调用blade-system的部门详情接口bladex平台这边就会SysCache.getDept(dept.getParentId()) 缓存部门信息
2. Bladex-Biz这边使用 SysCache.getDept(deptId) 就会获取失败
3. 发现Bladex和Bladex-Biz两边调用SysCache.getDept(deptId) 实际缓存的redis数据格式是不一样的,Bladex这边是protostuff
Bladex-Biz这边是json
主要是目前发现blade.yaml
blade:
redis:
serializer-type: protostuff 的redis配置只对bladex中使用的地方生效,平台端这边调用SysCache.getDept(dept.getParentId()) SysCache使用的是protostuff格式,业务端却是json格式 ,可以咨询下怎么可以让业务端这边也生效blade.yaml 中的blade.redis.serializer-type 配置么,因为发现BladeX-Biz实际存的是json,平台和业务端都是用的时候业务端缓存的,到了平台端Bladex就反序列号就有问题啦,同理平台端缓存的业务端这边是用业务端也会报错.
二、你期待的结果是什么?实际看到的又是什么?
期待的结果是:
Bladex和Bladex-Biz都能够跟着配置blade.yaml使用同一个序列化策略
blade:
redis:
serializer-type: protostuff
实际看到的Bladex和Bladex-Biz两边调用SysCache.getDept(deptId) 实际缓存的redis数据格式是不一样的,Bladex这边是protostuff
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
正在使用的是BladeX 企业版 3.4.0.RELEASE 在macOs系统
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
先确定biz有没有引入protostuff的依赖,然后在biz项目失效的服务内写一个config类试试,打个断点看看执行的那一个返回。代码如下
@AutoConfiguration(before = RedisTemplateConfiguration.class) public class ProtoStuffSerializerAutoConfiguration implements BladeRedisSerializerConfigAble { @Bean @Override public RedisSerializer<Object> redisSerializer(BladeRedisProperties properties) { if (BladeRedisProperties.SerializerType.ProtoStuff == properties.getSerializerType()) { return new ProtoStuffSerializer(); } return defaultRedisSerializer(properties); } }
讨论(0)
-
我试了下,断点就是不会走这个新加的配置类ProtoStuffSerializerAutoConfiguration,进入的是RedisTemplateConfiguration配置感觉ProtoStuffSerializerAutoConfiguration配置类好像在Biz中好像就不会执行

如果实在不能不能找到问题解决的话,如果直接改blade-starter-redis的RedisTemplateConfiguration类加上上面的逻辑是不是也可以解决.
因为这个类目前Biz失效的项目一定会走的,不过也很想知道为啥连上面那个测试的好像都不执行比较奇怪
@AutoConfiguration(before= RedisTemplateConfiguration.class)
public class ProtoStuffSerializerAutoConfiguration implements BladeRedisSerializerConfigAble {
@Override
public RedisSerializer<Object> redisSerializer(BladeRedisProperties properties) {
if (BladeRedisProperties.SerializerType.ProtoStuff == properties.getSerializerType()) {
return new ProtoStuffSerializer();
}
return defaultRedisSerializer(properties);
}
}

作者追问:2024-08-23 15:53
你试试blade-demo工程下新增配置类是否可以生效, 我这边是可以的。再看看你自己新建的包名是否有做对应的扫描


回答:
2024-09-14 20:03
在demo中试过了没有用,因为之前新建工程就是照着demo来建立的工程,后来就是按照上面那种方式暂时处理的.

作者追问:2024-09-14 20:08
讨论(0)
官方新品
- 热议问题
-
gateway无法启动,报错java.io.FileNotFoundException:WebMvcConfigurer.class
1
-
cookie中token缺失HttpOnly和Secure属性
1
-
在nacos配置多数据库之后sql日志不能正常打印了
1
-
无法本地调试服务
1
-
启动流程设计器工程flowable-design,表act_id_property用的是版本6.5.0.1,需要引入哪些依赖
1
-
关于物联网采集PLC一个点位有两个数据的情况
1
-
数据权限未生效
1
-
租户字段冲突
1
-
导入功能
1
-
在线文档无法直接调用文件上传功能?
1
扫一扫访问 Blade技术社区 移动端