v3.2.2026.0802 新增 MessageConverter 双协议消息模型转换助手,支持 Remoting 与 gRPC 消息互转;优化 gRPC 协议解析健壮性与并发安全,修复枚举偏移与字段编号问题,提升 PushConsumer 稳定性;统一云厂商 Provider 适配并升级依赖;修复 WriteLog 空引用与 TOPIC_NOT_EXIST 日志场景;新增 17 个云厂商单元测试及 gRPC 健壮性测试;优化 GitHub Actions 流程与集成测试自动启动大石头 authored at 2026-08-02 02:17:08
diff --git a/ChangeLog.md b/ChangeLog.md
index 511e25d..1638577 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,31 @@
# 更新日志
+## v3.2.2026.0802 (2026-08-02)
+
+### gRPC 协议增强与健壮性
+- **MessageConverter 双协议转换助手**:新增公共 API,支持 Remoting(Message/MessageExt)与 gRPC(GrpcMessage)消息模型双向转换,消除调用方手写胶水代码
+- **gRPC 解析与并发健壮性**:修复枚举偏移、字段编号错误,增强 Protobuf 解析容错与并发安全,提升 PushConsumer 稳定性
+- **性能与架构优化**:优化 gRPC 编解码热点路径与整体架构
+
+### 云适配优化
+- **CloudProvider 统一**:统一阿里云、华为云、腾讯云及 Apache ACL 适配逻辑,升级依赖并优化多项细节
+
+### Bug 修复
+- **[fix]** 修复 WriteLog 空引用问题,Topic 名为空时兜底输出
+- **[fix]** 补充 TOPIC_NOT_EXIST 异常场景日志,使用 range slice 优化
+
+### 测试与质量
+- 新增 17 个云厂商单元测试,覆盖四家 Provider 适配器逻辑
+- 新增 gRPC 黄金字节样本、健壮性及 MessageConverter 单元测试
+- 修复 4 个 CI 测试失败(空 Broker 列表、消费初始化等场景)
+- 集成测试支持自动启动本地 RocketMQ 并硬失败
+
+### 其他优化
+- 重构 GitHub Actions RocketMQ 配置生成与下载方式,增强可读性和可维护性
+- 新增竞品分析文档,重构需求/功能清单/架构三件套文档体系并统一格式
+
+---
+
## v3.1.2026.0601 (2026-06-01)
### RocketMQ 5.x 协议增强(F052~F058)
diff --git a/NewLife.RocketMQ/NewLife.RocketMQ.csproj b/NewLife.RocketMQ/NewLife.RocketMQ.csproj
index 6a5b75f..914250d 100644
--- a/NewLife.RocketMQ/NewLife.RocketMQ.csproj
+++ b/NewLife.RocketMQ/NewLife.RocketMQ.csproj
@@ -5,7 +5,7 @@
<Description>企业级纯托管 RocketMQ 客户端,双协议支持 Remoting 4.x/5.x 和 gRPC 5.x Proxy,零外部依赖,无需 Java、gRPC、Protobuf 第三方库,统一适配阿里云、华为云、腾讯云及 Apache ACL,完整企业级特性(消费重试、死信队列、事务消息、顺序消费、Pop 消费),十亿级项目验证</Description>
<Company>新生命开发团队</Company>
<Copyright>©2002-2026 新生命开发团队</Copyright>
- <VersionPrefix>3.1</VersionPrefix>
+ <VersionPrefix>3.2</VersionPrefix>
<VersionSuffix>$([System.DateTime]::Now.ToString(`yyyy.MMdd`))</VersionSuffix>
<Version>$(VersionPrefix).$(VersionSuffix)</Version>
<FileVersion>$(Version)</FileVersion>
@@ -30,7 +30,7 @@
<RepositoryUrl>https://github.com/NewLifeX/NewLife.RocketMQ</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageTags>新生命团队;X组件;NewLife;RocketMQ;纯托管;零依赖;Remoting;gRPC;阿里云;华为云;腾讯云;消息队列;MQ;分布式;事务消息;延迟消息;顺序消息;死信队列;$(AssemblyName)</PackageTags>
- <PackageReleaseNotes>新增 F052~F058 协议特性:消息压缩可插拔(ZLIB/LZ4/ZSTD)、gRPC 优先级消息、ACL 2.0、LMQ 轻量队列、gRPC PushConsumer;支持 RocketMQ 5.5.0+ Lite Topic 动态创建(F057);新增 Producer/Consumer 消息钩子注册方法;修复 MessageExt 解压 Body 错误;新增 Windows 一键安装脚本</PackageReleaseNotes>
+ <PackageReleaseNotes>新增 MessageConverter 双协议消息模型转换助手,支持 Remoting 与 gRPC 消息互转;优化 gRPC 协议解析健壮性与并发安全,修复枚举偏移与字段编号问题,提升 PushConsumer 稳定性;统一云厂商 Provider 适配并升级依赖;修复 WriteLog 空引用与 TOPIC_NOT_EXIST 日志场景;新增 17 个云厂商单元测试及 gRPC 健壮性测试;优化 GitHub Actions 流程与集成测试自动启动</PackageReleaseNotes>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<EmbedUntrackedSources>true</EmbedUntrackedSources>
@@ -40,7 +40,7 @@
</PropertyGroup>
<ItemGroup>
- <PackageReference Include="Microsoft.SourceLink.GitHub" Version="10.0.300">
+ <PackageReference Include="Microsoft.SourceLink.GitHub" Version="10.0.301">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
@@ -62,7 +62,7 @@
</ItemGroup>
<ItemGroup>
- <PackageReference Include="NewLife.Core" Version="11.17.2026.706-beta0929" />
+ <PackageReference Include="NewLife.Core" Version="11.18.2026.801" />
</ItemGroup>
</Project>
diff --git a/Readme.MD b/Readme.MD
index c7ed789..5208200 100644
--- a/Readme.MD
+++ b/Readme.MD
@@ -166,6 +166,17 @@ consumer.OnConsume = (q, messages) =>
};
```
+### 双协议消息转换
+
+```csharp
+// Remoting 消息转 gRPC 消息(需 netstandard2.1+)
+var grpcMsg = message.ToGrpcMessage();
+
+// gRPC 消息转 Remoting 扩展消息 / 基础消息
+var ext = grpcMsg.ToMessageExt(); // MessageExt(含全部系统属性)
+var msg = grpcMsg.ToMessage(); // Message(基础字段)
+```
+
---
## 消费者高级特性
@@ -324,6 +335,7 @@ MqBase (业务基类)
└── gRPC 协议(5.x Proxy,netstandard2.1+)
├── GrpcClient (HTTP/2,Unary + Server Streaming)
├── GrpcMessagingService (11 个 RPC 方法)
+ ├── MessageConverter (Remoting ↔ gRPC 消息互转)
└── ProtoWriter/ProtoReader (自研 Protobuf 编解码)
云厂商适配层
diff --git a/XUnitTestRocketMQ/XUnitTest.csproj b/XUnitTestRocketMQ/XUnitTest.csproj
index 5d3dd1d..4581761 100644
--- a/XUnitTestRocketMQ/XUnitTest.csproj
+++ b/XUnitTestRocketMQ/XUnitTest.csproj
@@ -13,7 +13,7 @@
</ItemGroup>
<ItemGroup>
- <PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.7.0" />
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.8.1" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="Xunit.SkippableFact" Version="1.5.61" />