首页 > 其他分享 >CAP 8.0 版本发布通告 - CAP 7岁生日快乐!

CAP 8.0 版本发布通告 - CAP 7岁生日快乐!

时间:2023-12-21 09:12:47浏览次数:34  
标签:PR 8.0 修复 CAP 感谢 版本 NET 生日快乐

前言

今天,我们很高兴宣布 CAP 发布 8.0 版本正式版,从 2016 年 12 月 14 日CAP立项到 2023 年 12 月14 日发布 8.0 版本刚好满 7 年,祝 CAP 7 岁生日快乐,巧的是这一天也是我生日,真是意想不到啊!

那就做一个 Overview 吧,在这7年间,我们一共发布了 61 个版本,在 Github 上有 6.3K 的 Star,有 108 个贡献者以及 DotNetCore.CAP 核心包在 NuGet 上有 640 万的下载量。这个数据讲道理说作为一个非基础库组件来说真的还不错,不知道你怎么看。

还没有 Star 的朋友如果你能访问 Github,动手点个 Star 是对7年来我们最大的支持,一件事情坚持7年真的不容易。如果你不能访问Github,可以在评论区回复 “ 祝CAP 7岁生日快乐! ” 表示支持。

如果你想在你的公司讲解分布式事务或引入CAP 给同事做介绍,可以使用2周前我在 .NET Conf 2023 成都会场分享的分布式事务的PPT,这是pptx版本没有版权,你可以随意进行更改使用。

总览

我们宣布 CAP 发布 8.0 版本正式版,这个版本我们一方面是对.NET 8 的支持,另外一方面主要是对 Dashboard 的认证授权方式做了大的调整,另外我们也修复了一些BUG。

从 7.2 版本以来,我们发布了2个小版本,因为小版本我们不会有发布通告,所以这篇文章中也会提及我们在之前的这些小版本中加的一些小功能。

下面,具体看一下我们新版本的功能吧。

在我们构建 SOA 或者 微服务 系统的过程中,会遇到分布式系统下事务一致性的问题,我们通常需要使用事件来对各个服务进行集成,在这过程中简单的使用消息队列并不能保证数据的安全性,CAP作为一个分布式事务解决方案采用的是和当前数据库集成的本地消息表的方案来解决在各个服务通讯环节可能出现的异常,它能够保证任何情况下数据都是不会丢失的,同样可以用来作为 EventBus 使用,它轻量简单易于使用。

对 CAP 更多了解,请查看我们的 官方文档

本次在 CAP 8.0 版本中我们主要带来了以下改进或新特性:

  • 对.NET 8 的全面支持
  • 添加 FallbackWindowLookbackSeconds 配置项以支持自定义回溯时间窗。
  • 改进 EnableConsumerPrefetch 和 UseDispatchingPerGroup 配置项以共同工作。
  • DotNetCore.CAP.NATS 支持配置 DeliverPolicy,默认为 New。
  • 破坏性改动
    • 在 DotNetCore.CAP.Dashboard 中移除 DefaultAuthenticationSchemeUseChallengeOnAuthDefaultChallengeSchemeAuthorizationPolicy 配置项。
  • BUG 修复
    • 修复消息无限重试的问题(PR #1456 - 感谢 @bschwehn):这一修复解决了订阅者移除后消息重试机制的问题。
    • 修复 Open Telemetry 上下文丢失(PR #1452 - 同样感谢 @bschwehn):这个修复确保了在消费者重试和Baggage传播过程中上下文的完整性。
    • 修复 NATS 连接重连处理问题(PR #1449 - 感谢 @davidterins)。
    • 修复 DotNetCore.CAP.InMemoryStorage 发件箱模式消息恢复问题(PR #1439 - 同样感谢 @davidterins)。
    • 修复 Azure Service Bus 事件处理程序的双重注册问题(PR #1427 - 同样感谢 @demorgi)。
    • 修复 SQL Server 事务中发布延迟消息的问题(PR #1422 - 感谢 @xiangxiren。

全面支持 .NET 8

在这个版本中,我们添加了新的 .NET 8 版本框架,同时我们对于 .NET 6 保持了兼容性,在 NuGet的依赖项中将同时显示 net6.0 和 net8.0,如下图:

在 .NET 8 中依赖注入引入了 KeyedService,在这个版本中我们进行了支持,你的订阅方法现在可以位于 KeyedService 中,如果使用的旧版本在过去则会引发异常。

支持自定义回溯时间窗

添加 FallbackWindowLookbackSeconds 配置项以支持自定义回溯时间窗。

在过去,我们在重试时会从数据库中获取4分钟前存储的消息,这一设定是为了保证新加入的消息不会被获取到从而避免重复发送或消费的问题,现在这个值可以进行配置。但是如果这个值配置太小则可能会带来副作用,所以我们在启动时如果检测到配置的值小于30秒则会打印警告日志进行提醒。

适用的场景:如果你的系统在某个时间点才会一次性发送大量消息,并且这些消息不能在4分钟内处理完成,那么可以将此配置值调大以保证消息尽可能不重复。

EnableConsumerPrefetch,UseDispatchingPerGroup 同时工作

在 7.2.0 版中,我们将 UseDispatchingPerGroup 选项标记为 [Obsolete],并计划在未来的版本中删除它,并打算将其功能替换为 EnableConsumerPrefetch 选项。但是,根据用户反馈,UseDispatchingPerGroup 有自己独特的使用场景。因此,在 7.2.1 版本中,我们将继续支持 UseDispatchingPerGroup 选项,并且 EnableConsumerPrefetch 也将同时生效。

下图描述了这两个配置项不同的组合下,消费者任务的执行方式。

NATS 支持配置 DeliverPolicy,默认为 New

NATS 现在支持对 Stream 的 DeliverPolicy 参数进行自定义,可选项有 DeliverAll, DeliverLast, DeliverNew, DeliverByStartSequence, DeliverByStartTime, or DeliverLastPerSubject,默认为 DeliverPolicy.New

另外,NATS 出了一个新的 V2 版本的 .NET 驱动,我们有计划迁移到新的版本,如果有人愿意贡献请联系我或提交PR。

破坏性改动

在 DotNetCore.CAP.Dashboard 中移除 DefaultAuthenticationSchemeUseChallengeOnAuthDefaultChallengeSchemeAuthorizationPolicy 配置项。

现在将基于于 ASP.NET Core 的认证和授权中间件来工作,你可以在 Repo 的 Sample.Dashboard.Auth 示例项目下查看如何和 ASP.NET Core中间件进行集成。

BUG 修复

另外在这个版本中,我们修复了一些已知的Bug,以下是已经修复的问题列表。

  • 修复消息无限重试的问题(PR #1456 - 感谢 @bschwehn):这一修复解决了订阅者移除后消息重试机制的问题。
  • 修复 Open Telemetry 上下文丢失(PR #1452 - 同样感谢 @bschwehn):这个修复确保了在消费者重试和Baggage传播过程中上下文的完整性。
  • 修复 NATS 连接重连处理问题(PR #1449 - 感谢 @davidterins)。
  • 修复 DotNetCore.CAP.InMemoryStorage 发件箱模式消息恢复问题(PR #1439 - 同样感谢 @davidterins)。
  • 修复 Azure Service Bus 事件处理程序的双重注册问题(PR #1427 - 同样感谢 @demorgi)。
  • 修复 SQL Server 事务中发布延迟消息的问题(PR #1422 - 感谢 @xiangxiren。

总结

以上,就是本版本我们做出的一些新特性和改动,感谢大家的支持,我们很开心能够帮助到大家 。

大家在使用的过程中遇到问题希望也能够积极的反馈,帮助CAP变得越来越好。

标签:PR,8.0,修复,CAP,感谢,版本,NET,生日快乐
From: https://www.cnblogs.com/savorboard/p/cap-8-0.html

相关文章

  • Newtonsoft.Json.JsonReaderException:“Bad JSON escape sequence: \*. Path '****'
    测试Json字符串msg:{"field1":"\\\9527\","field2":"\\\\\data\\","field3":"\r\n\\\G\\\d\\\","field4":"TESTTEST\\1TEST\\\GTEST\\\\GTEST2\\\\\TEST3\\......
  • 12.Capabilities 进阶
    deviceName只是设备的名字,别名随便起不能锁定唯一一个设备uid多设备选择的时候,要指定uid默认读取设备列表的第一个设备设备列表获取adbdevicesnewCommandTimeoutappium程序应等待来自客户端的新命令多长时间超时后==会话删除==默认 60 秒设置为0......
  • MySQL 8.0 OCP 125
    Choosethebestanswer.Youencounteredaninsufficientprivilegeerrorinthemiddleofalongtransaction.您在长事务中遇到了不足的权限错误。Thedatabaseadministratorisinformedandimmediatelygrantstherequiredprivilege:通知数据库管理员并立即授予所需......
  • ubuntu 18.04.6编译uboot提示error: bad value (‘generic-armv7-a’) for ‘-mtune=
    按照按照  (https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide)制作了一个image当编译uboot的时候,发送命令make:makesocfpga_cyclone5_configmake 得到提示:cc1:error:badvalue(‘generic-armv7-a’)for‘-mtune=’switchcc1:note:va......
  • MySQL 8.0 OCP 36
    Choosethebestanswer.YouwishtostoretheusernameandpasswordforaclientconnectiontoMySQLserverinafileonalocalfilesystem.您希望将MySQL服务器的用户名和密码存储在本地文件系统的文件中。Whichisthebestwaytoencryptthefile?加密文件的......
  • mysql 5.7和8.0 yum安装
    安装环境Centos7.61.下载mysql源安装包$wgethttp://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm2.安装mysql源$yumlocalinstallmysql57-community-release-el7-8.noarch.rpm3.检查mysql源是否安装成功$yumrepolistenabled|grep"mysql.-comm......
  • 05.capability 配置参数解析
    capability配置参数解析Capability简介功能:配置Appium会话,告诉Appium服务器需要自动化的平台的应用程序形式:键值对的集合,键对应设置的名称,值对应设置的值主要分为三部分公共部分ios部分android部分SessionAppium的客户端和服务端之间进行......
  • MySQL8.0 OCP 34
    Choosefour.WhichfouraretypesofinformationstoredintheMySQLdatadictionary?MySQL数据字典中存储的哪四种信息类型?A)serverruntimeconfigurationB)serverconfigurationrollbackC)performancemetricsD)storedproceduredefinitions存储过程定义E)I......
  • kubescape的使用
    1.使用前言:Kubescape是一个开源的Kubernetes安全平台。它包括风险分析、安全合规性和错误配置扫描。它面向DevSecOps从业者或平台工程师,提供易于使用的CLI界面、灵活的输出格式和自动扫描功能。它为Kubernetes用户和管理员节省了宝贵的时间、精力和资源。(摘自官网)相关......
  • 5G RedCap
    ЗначениеRedCap5GRedCapотноситсякстандарту5G,предложенному3GPP.Посравнениюсранеевыпущеннымстандартом5G,функцииболееоптимизированы.5GRedCap......