码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • CAP 8.1 版本发布通告


    合集 - CAP(25)
    1.聊聊分布式事务,再说说解决方案2017-10-172.CAP 8.0 版本发布通告 - CAP 7岁生日快乐!2023-12-213.CAP 7.2 版本发布通告2023-08-084.CAP 7.1 版本发布通告2023-03-065.CAP 7.0 版本发布通告 - 支持延迟消息,性能炸了?2022-11-286.CAP 6.2 版本发布通告2022-09-197.CAP 6.1 版本发布通告2022-06-108.CAP 6.0 版本发布通告 - 支持 OpenTelemetry2022-01-079.CAP 5.2 版本发布通告2021-11-1610.CAP 5.1 版本发布通告 - 你期待的 Redis 来了2021-06-0811.CAP 5.0 版本发布通告2021-03-2912.CAP 3.1 版本发布通告2020-08-1713.CAP 3.0 版本发布通告2020-01-0614.CAP 2.6 版本发布通告2019-08-2915.CAP 2.5 版本发布通告2019-04-0116.CAP 2.4版本发布通告 - 支持版本隔离特性2019-01-0717.CAP 2.3版本发布通告 - 支持 MongoDB2018-08-3118..NET Core 事件总线,分布式事务解决方案:CAP2017-07-2119.CAP 介绍及使用【视频】2017-07-2720.招募:Wiki 文档翻译小伙伴招募2018-03-0821.分布式事务,EventBus 解决方案:CAP【中文文档】2017-08-0722.在 CAP 中使用 AOP ( Castle.DynamicProxy )2021-01-0523.如何在你的项目中集成 CAP【手把手视频教程】2018-09-1324.在 ASP.NET Core 中自动启用 CAP 事务2021-10-09
    25.CAP 8.1 版本发布通告04-17
    收起

    前言

    我们很高兴宣布 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 进行包装,而是直接是 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 给我们支持。

    GitHub stars

    如果你觉得本篇文章对您有帮助的话,感谢您的【推荐】。


    本文地址:http://www.cnblogs.com/savorboard/p/cap-8-1.html
    作者博客:Savorboard
    本文原创授权为:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本

  • 相关阅读:
    Unittest 框架介绍及第一个demo
    Docker和anaconda的区别?
    记录字节跳动前端面试,四轮技术面
    vue draggable组件,拖拽元素时,获取元素上在data或setup中定义的数据
    代码随想录打卡第四十八天|动态规划章节 ● 322. 零钱兑换 ● 279.完全平方数
    在vmware虚拟机中安装Linux系统CentOS7详细教程
    计算机中丢失MSVCR120.dll,丢失MSVCR120.dll的解决方法分享
    我国农业科学数据共享协议
    武汉便宜的ov通配符https证书
    Redis数据类型-List-基本使用
  • 原文地址:https://www.cnblogs.com/savorboard/p/18139824/cap-8-1
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号