2.5.4 Milestone Notes
新功能特性
- PhoenixClient 支持自定义 RPC 回复 Topic(支持回复消息的分发)
- 支持一键清除自定义已注册元数据
- 元数据注册 API 支持 KeyValue 结构注册 & 新增 containKey API
- 优化自动归档策略
- Console 支持 License 过期提示
- 优化 Console 对事件反序列化异常的提示.
性能修复补丁
- 修复 SenderActor 消息积压(导致内存泄漏)
- 调优线程池、解决分布式数据死锁
- 修复服务重启后无法结束在途事务的漏洞
- 修复了 KafkaSubscribe(ReceiverActor) 中的吞吐率(CPU 空转)
漏洞修复
- 修复 DBUtils 多线程并发问题
- 修复 EntityAggregateFixture 定时任务测试 NPE 问题
- 修复分布式数据 IO 缓存错误.
- DDataMap 缓存过期时间, 修复溯源过期
- 修复聚合根定时任务消息的幂等
- 区分 DDataMap 业务以及超时空值
- 修复 Console 按聚合根查询事件时乱序问题
- 修复 H2 下 Console 查询事件错误
- 修复 Consul 集群时健康检查心跳间隔的错误
- 修复 EntityAggregateFixture 缺失内部聚合根扫描
- 修复元数据注册在 EventSouring 下的反序列化问题
- EntityAggregateFixture 支持自定义订阅
API 变动
PhoenixClient 新增 API
/**
* Client 端异步发送接口. 回复到指定 topic
*
* @param msg
* @param targetTopic 接收命令的服务 Topic
* @param sourceTopic 接收回复的响应服务 Topic
* @param requestId
*/
public void sendNoReply(Object msg, String targetTopic, String sourceTopic, String requestId)
元数据注册 API 支持 KeyValue 结构注册
RegistryCollectData overSeasTag = null;
if (createCmd.getAccountCode().contains("OS")) {
// 单个多次调用
overSeasTag =
RegistryCollectData.builder()
.type(RegistryCollectData.Type.REGISTRY)
.splitRangeId(KafkaSubscribe.genSplitRangeId(mqAddress, subscribeTopic))
.registryValue("OS_AMT", String.valueOf(this.balanceAmt))
.registryValue("Overseas", this.account)
.build();
// 直接传入 Map
Map<String, String> registryKVMap = new HashMap<>();
registryKVMap.put("OS_AMT", String.valueOf(this.balanceAmt));
registryKVMap.put("Overseas", this.account);
overSeasTag =
RegistryCollectData.builder()
.type(RegistryCollectData.Type.REGISTRY)
.splitRangeId(KafkaSubscribe.genSplitRangeId(mqAddress, subscribeTopic))
.registryKV(registryKVMap)
.build();
}