前言

今天,我们很高兴宣布 CAP 发布 2.6 版本正式版。同时我们也很高兴的告诉你 CAP 在 GitHub 已经突破了3000 Star.

自从上次 CAP 2.5 版本发布 以来,已经过去了几个月的时间,关注的朋友可能知道,在这几个月的时间里,也发布了几个预览版的 2.6 版本的NuGet包。

简介

可能有些人还不知道 CAP 是什么,老规矩来一个简介。

CAP 是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案(https://github.com/dotnetcore/CAP)同样可以用来作为EventBus使用,目前已经2岁了,目前已经应用到了很多的公司和项目中, 想对 CAP 更多了解的同学可以看下官方文档。

本次在 CAP 2.6 版本中我们主要带来了以下新特性:

  • 启用新 Logo

  • 更加完善的文档支持(英文,中文)

  • 单例的 ICapPublisher

  • 支持多个消费者线程

  • Diagnostic特性的改进

  • 其他改进

下面我们就来逐一看一下这些新的特性。

启用新 Logo

我们终于有自己的 Logo 了,这个Logo由四个颜色的 C 组成,我来简单介绍下。

紫色:紫色是 NCC 组织 Logo 的颜色,代表了 CAP 的发源。

完善文档支持

我们深知文档对于一个开源项目的重要性,在上一版我们的文档写的比较乱而且对于目录结构的规划不合理,这导致我们的用户不能快速的找到他们想要了解的内容,我们已经意识到了这一点。

在新版本中,我们完善了我们的文档,我们对文档进行了一轮新的重新梳理,以便于阅读更加方便,以及快速找到需要的内容。

以下是我们新的文档的目录结构:

Monitoring 章节目前还在完善中,我们会等到下一个版本中完善。

英文文档对于CAP国际化也非常的重要,所以我们的文档以双语形式提供,在此也非常感谢上一版中对CAP文档进行翻译的小伙伴们。

你可以在下面的链接中找到我们最新的文档信息,如果您发现有错误的地方,欢迎点击页面右上角修改按钮提交PR进行修正。

文档:https://cap.dotnetcore.xyz

ICapPublisher 默认为单例

经过一些用户的反馈,我们了解到将 ICapPubliser 默认注册为 Scoped 会存在一些问题,特别是对于依赖注入容器生命周期不是特别了解的同学,可能会造成线程安全问题。

另外,对于在控制台(Console)应用程序中使用 CAP 的同学来说, Scoped 这种作用域的生命周期并不能起到应有作用,而且会造成在一些单例的对象中引用 ICapPubliser 造成无法释放的问题。

针对以上问题,我们在这一个版本中进行了调整。

  1. 调整 ICapPublisher 默认注册为单例。

  2. 更改 ICapPublisher  接口中 Transaction 属性为

    AsyncLocal<ICapTransaction>

针对于第 1 点,你现在可以在任何你需要的地方注入 ICapPublisher 进行使用而不用担心对象生命周期的问题。

针对于第 2 点,由于 ICapPublisher 现在为单例,所以我们将 Transaction 属性调整为了 AsyncLocal<ICapTransaction> 以便于能够进行释放。对于使用 CAP 封装的高级 API 的同学来说这个调整对你没有影响,如果您进行了一些自定义的事务对象接入的话,那么需要进行修改一下。

修改示例可以参考下面代码,注意注释部分:

public static IDbTransaction BeginTransaction(this IDbConnection dbConnection,    ICapPublisher publisher, bool autoCommit = false)
{   if (dbConnection.State == ConnectionState.Closed) {   dbConnection.Open();    }   var dbTransaction = dbConnection.BeginTransaction();   // 从ServiceProvider中拿到 CapTransactionBase 赋值给 publisher.Transaction publisher.Transaction.Value = publisher.ServiceProvider.GetService&lt;CapTransactionBase&gt;();    // 传递 dbTransaction 事务对象给 CAP 的事务对象接口   var capTransaction = publisher.Transaction.Value.Begin(dbTransaction, autoCommit); return (IDbTransaction)capTransaction.DbTransaction;
}

支持多个消费者线程

我们收到用户反馈,在使用 CAP 进行一些高数据量传输的项目中 ( 这些项目不太需要对消息进行严格的事务保证 ),消费者一个线程可能不能及时的进行处理,这可能导致消费者消息堆积严重。

在以前如果想要提高消费者处理速度,需要起多个消费者实例以进行负载均衡,但是对于单个实例来说并没有达到系统瓶颈。

在新版本中,我们提供了一个选项,以支持使用多个消费者线程进行消息的处理。你可以如下这样配置:

services.AddCap(x =&gt;
{   x.ConsumerThreadCount = 线程数量
}

改进 Diagnostics 支持

感谢 @gfx687 这位俄罗斯朋友对此贡献的 PR#380,#382。

现在,你可以利用 CAP 提供的 Diagnostics 特性对于 Header 进行自定义写入。

也就是说可以利用此特性对消息进行全链路的追踪,从 Controller/Service-->Message Queue--> Consumer。

如果你感兴趣,可以查看我的这篇文章了解更多关于 Diagnostics 的信息。

其他改进

  • 性能提升

在此版本中,我们进行了一些小范围的代码优化。

感谢 @hetaoos 的 PR#365 ,感谢 @liuzhenyulive 的 PR#390 。

  • Bug修复

在此版本中,修复了一些bug。具体可以查看这里的 release 日志了解更多。

  • 依赖的 NuGet 包更新

总结

以上,就是本版本中支持的一些新特性,感谢大家的支持,我们很开心能够帮助到大家 。大家在使用的过程中遇到问题希望也能够积极的反馈,帮助CAP变得越来越好。:)

打赏一杯酒,削减三分愁。

跟着我们走,脱发包你有。

组织打赏账户为柠檬的账户,请标注「NCC」,并留下您的名字,以下地址可查看收支明细:https://github.com/dotnetcore/Home/blob/master/Statement-of-Income-and-Expense.md

OpenNCC,专注.NET技术的公众号

https://www.dotnetcore.xyz

微信ID:OpenNCC

长按左侧二维码关注

欢迎打赏组织

给予我们更多的支持

CAP 2.6 版本发布通告相关推荐

  1. CAP 2.4版本发布,支持版本隔离特性

    前言 自从上次 CAP 2.3 版本发布 以来,已经过去了几个月的时间,这几个月比较忙,所以也没有怎么写博客,趁着2019年到来之际(现在应该是2019年开始的时候),CAP也发布了2018年的最后一 ...

  2. CAP 2.3版本发布,支持 MongoDB

    前言 经过2个月的调整及测试,CAP 2.3 版本终于发布了,这个版本最大的特性就是对于 MongoDB 的支持,感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR,相信随着博客园的 ...

  3. CAP 3.0 版本正式发布

    前言 大家好,我们很高兴宣布 CAP 发布了 3.0 版本正式版. 自从上次 CAP 2.6 版本发布 以来,已经过去了几个月的时间,关注的朋友可能知道,在这几个月的时间里,也发布了几个预览版的 3. ...

  4. bootstrap 新闻列表_kuapingUI 2.2 版本发布,跨屏 UI-bootstrap 大组件 UI 框架

    kuapingUI 2.2 版本发布,增加了一个比较实用的工具栏web组件,是由分享按钮组 + 联系按钮组构成,分享按钮组包含了 QQ空间.朋友圈.QQ.微信.微博等分享:联系按钮组包含了 微信.QQ ...

  5. 多节点CDN缓存加速系统wdcdn2.4版本发布(20111213)

    多节点CDN缓存加速系统wdcdn2.4版本发布(20111213) Wdcdn是一套基于Linux+apache+squid架构开发的CDN缓存加速系统及管理系统 可帮助大中小站长或大中小企业低成本 ...

  6. 使用自动化插件release来管理maven项目的版本发布

    在实际开发过程中,特别是现在推崇的敏捷开发,项目版本的发布非常频繁,有可能是一周就一个版本.对于多模块构建的项目,如何在发布时统一升级项目版本,如果都由人来操作,很容易就漏改某个模块的版本,导致出现问 ...

  7. weblogic创建域后启动不了_WebLogic的Azure虚拟机主要版本发布

    作者:Reza Rahman 我们很高兴地宣布,将发布在Azure Linux虚拟机上运行Oracle WebLogic Server(WLS)的解决方案的主要版本.该版本是与WebLogic团队共同 ...

  8. Istio 1.1 版本发布,性能和可用性提升

    3月20日,Istio 1.1版本发布,距离Istio 1.0版本发布已经过去了7个月.Istio 1.0版本发布的时候,一些主要新功能包括: 将多个 Kubernetes 集群添加到单个网格中,并启 ...

  9. 版本发布后软件测试人员要做的工作

    我在这里讨论的方法主要是针对互联网企业的测试,可能对传统企业的测试来说会有点不同,但是大体上是适用所有公司的测试情况的. 版本发布后大部分测试人员的意识里面都会认为该要好好休息一下了,放几天羊,做做其 ...

最新文章

  1. 基于流式的md5计算-多线程下载工具Lwget介绍
  2. 服务器性能估算参考(硬件-分析数据库)
  3. java和C++的const 和 final 的区别
  4. Other Linker Flags参数 -ObjC、-all_load和-force_load
  5. Java 快速开发二维码生成服务
  6. 设计模式C++实现(15)——观察者模式
  7. java代码示例(6-3)
  8. 【NLP】使用Transformer模型进行文本分类
  9. ProjectEuler500 【组合数学】【数论】
  10. 神秘的“阿里星”是一群怎么样的人
  11. 实现AJAX的基本步骤
  12. python args_Python可变参数*args和**kwargs用法实例小结
  13. m_map投影_MATLAB使用m_map工具箱演示绘制m_map logo
  14. vba显示正在加载_简单、易用的VBA过程积木代码
  15. python字典副本_如何复制字典并仅在Python中编辑副本?
  16. Linux 搭建zcash结点
  17. Java多线程学习五:哪些场景需要额外注意线程安全问题及多线程也可能引起性能问题
  18. CCF 2016-4-4游戏
  19. ubuntu + pycharm + anaconda + pyqt5 + tools 配置
  20. ps6人脸识别液化工具在哪_ps液化工具在哪?(Photoshop基础教程:液化工具)

热门文章

  1. C# 生成私钥和公钥
  2. 博客园电子月刊第三期出炉
  3. 如何在Microsoft Word中插入签名
  4. 找call写call_如何将Google Call Widget添加到任何网页
  5. Unity(创建脚本)
  6. AI+时代,谈谈产品经理对图像识别技术的阈值控制
  7. 用GCD线程组与GCD信号量将异步线程转换为同步线程
  8. C#学习笔记(十四):StatusBar控件
  9. 使用 dotnet-monitor 在 Kubernetes 中收集 .NET metrics
  10. 实践剖析.NET Core如何支持Cookie滑动过期和JWT混合认证、授权