CAP 8.1 版本发布通告
前言
我们很高兴宣布 CAP 发布 8.1 版本正式版,我们在这个版本中主要是添加了一些新的配置项支持,并且根据用户反馈做了一些功能调整,同时在这个版本开始默认禁用了从7.2版本引入的并行发布消息。
下面,具体看一下我们新版本的功能吧。
总览
可能有些人还不知道 CAP 是什么,老规矩来一个简介。
CAP 是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案(https://github.com/dotnetcore/CAP)同样可以用来作为 EventBus 使用,该项目诞生于2016年,目前在 Github 已经有超过 6400+ Star 和 110+ 贡献者,以及在 NuGet超 700 万的下载量,并在越来越多公司的和项目中得到应用。
如果你想对 CAP 更多了解,请查看我们的 官方文档。
本次在 CAP 8.1 版本中我们主要带来了以下新特性:
- 新增支持 EnablePublishParallelSend 配置项
- 允许Mongo启用事务时指定Session Handle
- 过滤器上下文参数添加 MediumMessage
- 异步开启事务发送消息API
- AzureServiceBus 支持配置 Correlation header
- PostgreSql 中使用 DataSource 配置连接
- NATS添加新的配置项
- 破坏性改动
- 移除 NATS DeliverPolicy 配置项
- 发布消息默认行为调整为串行发布
新增支持 EnablePublishParallelSend 配置项
我们在7.2版本中,添加了消息发布任务由.NET线程池管理的功能,这个特性在发送侧默认启用。由于.NET线程池中执行任务是并行执行的这并不会保证任务的执行顺序,所以这会导致一个问题就是在某些场景中用户希望串行发送保证消息以保证顺序,使用线程池的话无法保证做到这一点。
所以我们在这个版本中恢复了串行发送消息的默认行为,并提供了新的配置项 EnablePublishParallelSend 来开启并行发送消息。
BTW, 消费侧同样引入了线程池,同样没有默认开启,可以通过 EnableConsumerPrefetch 来启用,这样所有的消费者都将并行执行。
添加 Mongo 启用事务时指定 SessionHandle 扩展
在这个版本中,我们添加了一个新的重载允许使用Mongo存储在开启事务时,传递 IClientSessionHandle 参数。IClientSessionHandle 相当于关系数据库中的 DbTransaction,这在你想精确控制事务的场景提供更多灵活性。
public static IClientSessionHandle StartTransaction(this IMongoClient _,
IClientSessionHandle clientSessionHandle,
ICapPublisher publisher, bool autoCommit = false)
{
// 。。。
}
感谢 @shkarface 对此做出的贡献。
过滤器上下文参数添加 MediumMessage 允许更多可能性
我们在过滤器上下文 ConsumerContext 中,添加了新的 MediumMessage 参数对象。 MediumMessage 这个对象是CAP内部用于和数据库进行映射的对象,一般用户不需要关心。
在这个版本中,我们添加此参数的主要原因是用户可以通过此参数来对消费者执行过程进行更多控制行为,例如可以根据已完成重试来控制重试次数或者在某些情况禁用重试等。
感谢 @bschwehn 对此做出的贡献。
异步开启事务发送消息API
ICapPublisher 接口中的 Transaction 对象现在不再由 AsyncLocal<T> 进行包装,而是直接是 ICapTransaction 对象,受影响的地方为自定义事务扩展方法。只需简单的将 publisher.Transaction.Value =xxx 修改为 publisher.Transaction= xxx即可。
我们在本版本重新支持了异步开始事务的拓展方法支持 BeginTransactionAsync,以下是简单示例。
using (var connection = new MySqlConnection(ConnectionString))
{
using var transaction = await connection.BeginTransactionAsync(_capBus, true);
await connection.ExecuteAsync("insert into test(name) values('test')", transaction: (IDbTransaction)transaction.DbTransaction);
await _capBus.PublishAsync("sample.rabbitmq.mysql", DateTime.Now);
}
Azure ServiceBus 支持配置 correlation header
我们为AzureServiceBus添加了新的支持选项 DefaultCorrelationHeaders,该配置项允许用户设置 correlation过滤器,你可以在这里查看详细信息。
感谢 @demorgi 对此做出的贡献。
PostgreSql 中使用新的 NpgsqlDataSource 配置项以支持动态密码
由于在Postgres中直接使用 Connection 连接字符串不支持设置动态密码,在一些情况下为了安全需要定期更新密码,所以为了支持这个功能,我们支持了使用
来配置数据库连接,来支持动态更新密码。
同时使用 NpgsqlDataSource 来配置数据库连接也是 NpgSql 8.0 版本后的推荐做法。
感谢 @jonekdahl 对此做出的贡献。
NATS 添加新的配置项
我们为 NATS 提供了新的配置项允许更加精细的控制在创建 Consumer 连接时候的选项,下面的新增的2个配置项。
StreamOptions 用于创建 Stream 时指定的设置项, Stream相当于是消息的存储介质,你可能在创建的时候设置持续时间、大小、副本等,你可能在这里查看更多可能的配置项。
ConsumerOptions 用于指定消费者创建时的相关参数,你可以在这里查看更多可能的配置项。
破坏性改动
移除 NATS DeliverPolicy 配置项
由于 NATS 添加了新的配置项,所以原本归属于 ConsumerOptions中的配置项已经被移除。你可以通过ConsumerOptions来设置。
发布消息默认行为调整为串行发布
从 7.2 版开始,为了提高发布方面的性能,我们让 .NET 线程池负责处理消息发布。不过,由于线程池中的任务不能保证按顺序执行,而且确保线性发布在某些用例中很有意义,因此我们将从本版本开始恢复线性发布。
同时,我们还引入了一个新选项 EnablePublishParallelSend,允许用户启用并行消息发送功能。
总结
以上,就是本版本我们做出的一些新特性和改动,感谢大家的支持,我们很开心能够帮助到大家 。
大家在使用的过程中遇到问题希望也能够积极的反馈,帮助CAP变得越来越好。
如果你喜欢这个项目,可以通过下面的连接点击 Star 给我们支持。
如果你觉得本篇文章对您有帮助的话,感谢您的【推荐】。
本文地址:http://www.cnblogs.com/savorboard/p/cap-8-1.html
作者博客:Savorboard
本文原创授权为:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
CAP 8.1 版本发布通告的更多相关文章
- CAP 2.6 版本发布通告
前言 今天,我们很高兴宣布 CAP 发布 2.6 版本正式版.同时我们也很高兴的告诉你 CAP 在 GitHub 已经突破了3000 Star. 自从上次 CAP 2.5 版本发布 以来,已经过去了几 ...
- CAP 3.0 版本发布通告
前言 大家好,我们很高兴宣布 CAP 发布了 3.0 版本正式版. 自从上次 CAP 2.6 版本发布 以来,已经过去了几个月的时间,关注的朋友可能知道,在这几个月的时间里,也发布了几个预览版的 3. ...
- CAP 3.1 版本发布通告
前言 今天,我们很高兴宣布 CAP 发布 3.1 版本正式版.同时我们也很高兴的告诉你 CAP 在 GitHub 已经突破了 4000 Star. CAP 3000 Star 还是去年8月份的时候,最 ...
- CAP 5.0 版本发布通告
前言 今天,我们很高兴宣布 CAP 发布 5.0 版本正式版.同时我们也很高兴的告诉你 CAP 已经有越来越多的用户并且变得越来越流行. 在 5.0 版本中,我们主要致力于更好的支持 .NET 5 以 ...
- CAP 5.1 版本发布通告 - 你期待的 Redis 来了
前言 今天,我们很高兴宣布 CAP 发布 5.1 版本正式版,在这个版本里我们同样引入了更多令人激动的新特性和改进,同时也得到越来越多人的喜爱. 得益于社区的反馈和贡献者的支持,在过去的两个月里,我们 ...
- CAP 5.2 版本发布通告
前言 今天,我们很高兴宣布 CAP 发布 5.2 版本正式版,在这个版本中,我们主要致力于更好的优化使用体验以及支持新的 Transport,同时在该版本也进行了一些 bug 修复的工作. 自从 5. ...
- CAP 6.0 版本发布通告 - 支持 OpenTelemetry
前言 今天,我们很高兴宣布 CAP 发布 6.0 版本正式版,在这个版本中,我们主要致力于对 OpenTelemetry 提供支持,以及更好的适配 .NET 6. 那么,接下来我们具体看一下吧. 总览 ...
- CAP 6.1 版本发布通告
前言 今天,我们很高兴宣布 CAP 发布 6.1 版本正式版,在这个版本中我们主要针对目前已经发现的几个BUG进行了修复了以及添加了一些小特性. 那么,接下来我们具体看一下吧. 总览 可能有些人还不知 ...
- CAP 6.2 版本发布通告
前言 今天,我们很高兴宣布 CAP 发布 6.2 版本正式版,在这个版本中我们主要做了一些功能优化,以及针对目前已经发现的几个 BUG 进行了修复了. 那么,接下来我们具体看一下吧. 总览 可能有些人 ...
- CAP 7.0 版本发布通告 - 支持延迟消息,性能炸了?
前言 今天,我们很高兴宣布 CAP 发布 7.0 版本正式版,我们在这个版本中带来了大批新特性以及对性能的优化和改进. 自从今年 1月份发布 6.0 版本以来,已经过去了快1年的时间.在过去的将近1年 ...
随机推荐
- 并发编程 --- CAS原子操作
介绍 CAS(Compare And Swap) 是一种无锁算法的实现手段,中文名称为比较并交换.它由 CPU 的原子指令实现,可以在多线程环境下实现无锁的数据结构. 原理 CAS 的原理是:它会先比 ...
- 树形dp套路
我们知道dp也就是动态规划的思想就是先解决小问题,通过不断的解决小问题,最终解决大问题.那么能够应用树形dp套路的题目都应该符合一个条件,那就是通过解决每个子树的小问题,最终解决整棵树的大问题. 套路 ...
- MDC实现微服务链路追踪
一.问题背景 在微服务架构中,我们没办法快速定位用户在一次请求中对应的所有日志,在排查生产问题的时候会非常困难,那是因为我们在输出的日志的时候没把请求的唯一标示输出到我们的日志中,导致我们没办法根据一 ...
- Fiddler修改响应体
方法1 将请求从左侧列表中,拖入AutoResponder中. 然后右键规则,点击编辑 修改后点击save 方法2 在AutoResponder中选择Create New Response也可类似方式 ...
- [VueJsDev] 基础知识 - asyncTool.js异步执行工具
[VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html asyncTool.js 异步执行工具 ::: detail ...
- Centos安装常见软件
一.vscode sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e &qu ...
- arch安装discover ——KDE商店
yay -S discover sudo pacman -S archlinux-appstream-data packagekit-qt5 flatpak fwupd 安装完就可以使用KDE商店了
- 单麦克风AI降噪模块及解决方案
前记 随着以AI为核心的智能设备的广泛发展,语音这个非常重要的入口一直是很多厂商争夺的市场.作为音频采集的前端设备,能采集到的距离远,清晰度高,无噪声的信号是一个非常重要的能力.这样就对音频前端降 ...
- Windows 2012 R2 修复CredSSP 远程执行代码漏洞 CVE-2018-0886
本文基于window 2012 R2版本,各位参考下载自己版本对应的补丁包即可 说明 公司的安全性检查,需要修复服务器上的漏洞,其中有个漏洞是CVE-2018-0886,结果网上的资料和一番折腾,终于 ...
- 记springBoot一直报Exception authenticating MongoCredential.
项目场景: 场景:继上回docker安装好了mongo,然后自己本地项目尝试搭建使用连接mongo 问题描述: 按照别人写的文章教程一步步操作,最后自己本地尝试连接查询,跳出这个用户权限不够,发生了套 ...