一、该问题的重现步骤是什么?
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)
- 热议问题
-
初次登录出现 认证信息错误或无效
1
-
测试签名认证失败
1
-
pom版本问题
2
-
如何自定义登录逻辑?
2
-
登录界面增加记住用户名密码功能
2
-
/blade-auth/oauth/token登录接口变得很慢
1
-
找不到版本号?
1
-
设备链接物联网平台的mqtt服务
1
-
字典code不可编辑的限制取消
1
-
商业版的springboot 最新版本登录的时候出现 请求未授权...是还要在哪儿配置什么吗?
1
扫一扫访问 Blade技术社区 移动端