宣布 Brighter V10 发布:支持 CloudEvents、新增多种提供程序并增强弹性能力的重大版本

经过数年的专注开发,Brighter V10 正式发布!  
虽然我们将在未来几个月内继续支持 Brighter V9(甚至可能延续到明年或更久),但此次发布标志着 Brighter 发展历程中的一个重要里程碑。V11 的规划可能将在来年启动,但眼下,让我们先深入了解 V10 带来了哪些新特性。

V10 有哪些新功能?

Brighter V10 引入了一系列强大的新功能与集成,旨在简化您的开发流程。

CloudEvents 支持  

Brighter V10 现在默认采用 CloudEvents 规范。通过自动设置标准化的事件头信息,显著提升了跨服务和跨平台的互操作性,使您的分布式系统更加健壮且不依赖特定厂商。

默认消息映射器  

使用 JSON 时,您不再需要编写自定义消息映射器。Brighter 内置了标准 JSON 序列化的默认消息映射器。此外,还专门提供了用于 CloudEvents JSON 格式的映射器,简化了与符合 CloudEvents 规范平台的集成。

集成消息调度器  

延迟消息处理现在成为一等公民。Brighter V10 引入了全新的消息调度器,并原生支持主流调度后端,包括 Quartz.NETHangfire 和 AWS Scheduler。现在,只需一行代码即可安排命令在未来执行:

processor.Post(TimeSpan.FromSeconds(10), new SomeCommand());

Polly 弹性管道集成  

我们通过集成 Polly 最新的 [弹性管道 API Resilience Pipeline API,全面升级了弹性能力。这为您配置重试、熔断器、超时等策略提供了更强大、更灵活的方式,适用于命令与事件处理。

services.AddBrighter(opt =>
{
    var resiliencePipelineRegistry = new ResiliencePipelineRegistry<string>(); 
    resiliencePipelineRegistry.AddBrighterDefault();
    // ...
    opt.ResiliencePipelineRegistry = resiliencePipelineRegistry;
});

增强的可空引用类型支持  

我们在整个代码库中大幅改进了可空引用类型(Nullable Reference Types)的注解,使在启用可空特性的项目中编写更安全、更可预测的代码成为可能。

扩展的提供程序支持  

我们显著扩展了 Brighter 的集成生态,新增了多个一流(first-class)提供程序支持:

  • MongoDB:全面支持将 MongoDB 用作 InboxOutbox 以及分布式锁。
  • RocketMQ:原生支持 RocketMQ 消息网关。
  • PostgreSQL:支持使用 Postgres 作为消息网关。
  • Google Cloud Platform (GCP):全面支持 GCP,包括:
    • 使用 Pub/Sub 作为消息网关;
    • 使用 Firestore 实现 Inbox、Outbox 和分布式锁;
    • 使用 Spanner 实现 Inbox 和 Outbox 模式。
  • AWS SDK V4:新增对最新版 .NET AWS SDK(V4)的支持,相关包以 V4 后缀命名,与现有的 V3 支持并行提供。
  • 增强的 AWS 支持:
    • 改进的 LocalStack 兼容性:修复了已知问题,本地开发体验更流畅;
    • 高级 SQS/SNS 功能:新增对直接发布到 SQS 以及 SNS/SQS FIFO(先进先出)主题和队列的支持。
  • RabbitMQ:支持 RabbitMQ 客户端 V7 及 Quorum Queue。

破坏性变更(Breaking Changes)

作为一次主版本更新,V10 包含若干破坏性变更,旨在提升库的长期健康度与易用性。

不再支持 .NET 6  

Brighter V10 现在面向 .NET 8.NET 9.0 和 .NET Standard 2.0。根据微软的支持策略,我们已移除对 .NET 6 的支持(其长期支持 LTS 窗口已结束)。要升级到 Brighter V10,您必须更新项目的 Target Framework。

同步与异步 API 明确分离  

为提供更清晰、更显式的 API,我们对同步与异步接口进行了分离。现在您将看到带有 Async 和 Sync 后缀的独立接口。

例如:消息映射器 IAmAMessageMapper 现仅用于同步映射,而新增的 IAmAMessageMapperAsync 接口用于异步操作。请更新您的自定义映射器,实现相应的接口。

减少“基本类型沉迷”(Primitive Obsession)  

为提升类型安全性和领域清晰度,我们将关键概念(如 ID、分区键)从基本类型(如 string)替换为专用类型(如 IdPartitionKey 等)。为便于迁移,我们已实现从 `string` 到这些新类型的隐式转换。

额外福利:在 .NET 9+ 上运行时,新的 Id.Random() 方法默认生成 UUID v7

Microsoft 依赖注入配置变更  

依赖注入的设置流程已得到简化。我们引入了更流畅、更直观的 API,用于在 `IServiceCollection` 中配置 Brighter 服务:

// V9
services.AddServiceActivator(opt =>
{
    opt.Subscriptions = /* ...订阅配置... */;
    opt.ChannelFactory = new ChannelFactory(connection);
})
.UseExternalBus(new SnsProducerRegistryFactory(...).Create());
// V10
services.AddConsumers(opt =>
{
    opt.Subscriptions = /* ...简化的订阅配置... */;
    opt.DefaultChannelFactory = new ChannelFactory(connection);
})
.AddProducers(opt =>
{
    opt.ProducerRegistry = new CombinedProducerRegistryFactory(
        new SnsMessageProducerFactory(...),
        new SqsMessageProducerFactory(...)
    ).Create();
});

请查阅我们的文档以了解新的注册方法。

包重命名与弃用

重命名的包:

  • Paramore.Brighter.MessagingGateway.RMQ → Paramore.Brighter.MessagingGateway.RMQ.Sync
  • Paramore.Brighter.Extensions.Hosting → Paramore.Brighter.Outbox.Hosting
  • Paramore.Brighter.*.Dapper → Paramore.Brighter.Dapper
  • Paramore.Brighter.Tranformers.AWS → `Paramore.Brighter.Transformers.AWS(修正拼写)

已弃用的包(V10 起不再支持):

  • Paramore.Brighter.MessagingGateway.RESTMS
  • Paramore.Brighter.Outbox.EventStore

操作要求:如果您的项目依赖上述已弃用的包,请在我们的 GitHub 仓库中提交 issue 以进一步讨论。

结语

Brighter V10 是一次重大飞跃,全面拥抱现代 .NET 实践与云原生标准。通过引入 CloudEvents、默认消息映射器,以及对 MongoDBGCP RocketMQ 等平台的扩展支持,Brighter 正变得更强大、更灵活。

我们非常期待您试用 V10,并欢迎您的反馈!  
如需详细的迁移指南和文档,请访问我们的 GitHub 仓库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值