前言

今天,我们很高兴宣布 CAP 发布 6.0 版本正式版,在这个版本中,我们主要致力于对 OpenTelemetry 提供支持,以及更好的适配 .NET 6。

那么,接下来我们具体看一下吧。

总览

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

CAP 是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案(https://github.com/dotnetcore/CAP)同样可以用来作为 EventBus 使用,该项目诞生于2016年,目前在 Github 已经有超过 5000+ Star 和 70 个贡献者,以及在 NuGet 超200万的下载量,并在越来越多公司的和项目中得到应用。

如果你想对 CAP 更多了解,请查看我们的 官方文档(http://cap.dotnetcore.xyz/)。

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

  • 适配 .NET 6 启用 #nullable

  • 支持 OpenTelemetry

  • 改进 NATS Jetstream 对通配符的支持

  • Azure ServiceBus 支持自定义 Header

  • 更新依赖的 NuGet 包到最新版本

适配 .NET 6

虽然上一个版本也能够在 .NET 6 的项目中使用,但是在这个版本中我们升级了我们的 NuGet 包到和框架符合的 .NET 6 的版本,并且对于依赖了EF的包兼容了 .NET Standard 2.1 的支持。

过去我们使用 Jetbrains.Annotations 包对可能存在null的场景进行检查,但是并不彻底,而且IDE对其支持有限。在新的 .NET 6版本中官方已经默认开启了#nullable的功能,所以我们也是将所有的库都进行了启用,以便于对可能存在null的场景尽可能在编译阶段知道,从而让代码更加稳健。

支持 OpenTelemetry

自 2.6 版本一直以来,我们提供了对 Diagnostics 的支持,并且我们在 SkyAPM.Diagnostics.CAP 中提供了对 Skywalking 的支持以用于做分布式跟踪,但这仅限于在 Skywalking 中才能使用。

在 .NET 6 中,.NET 团队改进了对分布式跟踪的支持,所以在这个版本中,CAP 提供了对 OpenTelemetry 的支持。

OpenTelemetry 是 CNCF 的一个可观测性项目,旨在提供可观测性领域的标准化方案,解决观测数据的数据模型、采集、处理、导出等的标准化问题,提供与三方 vendor 无关的服务。它是一组标准和工具的集合,旨在管理观测类数据,如 trace、metrics、logs 等。

集成CAP的方式也很简单,以在 ASP.NET Core 项目中为例:

首先,引用 DotNetCore.CAP.OpenTelemetry

PM> Install-Package DotNetCore.CAP.OpenTelemetry

然后,在集成了 OpenTelemetry 的项目( https://opentelemetry.io/docs/instrumentation/net/getting-started/#aspnet-core )中添加 CAP 的 Instrumentation 即可。

public void ConfigureServices(IServiceCollection services){services.AddOpenTelemetryTracing((builder) => builder.AddAspNetCoreInstrumentation().AddCapInstrumentation() // <-- CAP 的支持,只需添加此行.AddZipkinExporter());}

这样,你就可能使用你喜爱的工具来对跟踪请求进行查看。以下为CAP 在 Zipkin 的一个截图。

你可以在文档中找到更多信息。

https://cap.dotnetcore.xyz/user-guide/zh/monitoring/opentelemetry/

改进 NATS Jetstream 对通配符的支持

我们在上个版本(5.2)中改进了对 JetStream 的支持,但是不能发送带有* 通配符的消息,这个在 JetStream中是受支持的,在这个版本中我们对此进行了优化,现在你可能正常的发送带有通配符的消息。

此外,我们还提供了 NormalizeStreamName 配置项用于处于多个不同名称的流绑定同一个Topic的问题,默认情况下使用 '.' 前面的字符认为处于一个组。

Azure ServiceBus 支持自定义 Header

在这个版本中,Azure ServiceBus 也提供了 CustomHeaders 配置项用于接收来自于异构系统中发送的消息。你可以在文档中找到更多信息。

https://cap.dotnetcore.xyz/user-guide/en/transport/azure-service-bus/#heterogeneous-systems

感谢 @mviegas 对此提交的PR。

其他

其他的一些改进项目包括:

1、我们将所有的 nuget 的依赖包都升级到了最新版本。

2、修复了一些已知的Bug,你可以在 Github Release 中看到。

总结

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

NCC CAP 6.0 发布 —— 新增支持 OpenTelemetry相关推荐

  1. MaxDOS 8.0 发布,全面支持WIN7及X64系统

    MaxDOS 8.0 发布,全面支持WIN7及X64系统 2010年06月08日 MaxDOS 8 更新如下: 1.全面支持WINDOWS 2000,WINXP,WIN2003,VTISTA,WIN2 ...

  2. 百度AI全面开放EasyDL开启AI普及化时代;讯飞翻译机2.0发布:支持34种语言;华为开发能读懂人类情绪的AI技术

    百度AI全面开放EasyDL开启AI普及化时代,"小白"也能用AI 百度"燎原计划2018"暨百度AI开发者实战营第二季强势回归,首站北京即放送三大满足各类开发 ...

  3. MetaMask发布9.2.0版本 新增支持多个Ledger和Trezor硬件账户

    3月16日,浏览器插件钱包MetaMask发布V 9.2.0版本,新增支持多个Ledger和Trezor硬件账户,以及在向自己的合同地址发送代币时或自定义输入超额Gas时会添加警告,可自行设置以隐藏零 ...

  4. jetbrick-template 1.1.0 发布,支持 #tag, #macro, layout

    为什么80%的码农都做不了架构师?>>>    全面超越 Velocity 的全新一代 Java 模板引擎 jetbrick-template 1.1.0 正式版发布. 新版支持自定 ...

  5. AgileConfig轻量级配置中心1.3.0发布,支持多用户权限控制

    AgileConfig 当初是设计给我自己用的一个工具,所以只设置了一道管理员密码,没有用户的概念.但是很多同学在使用过后都提出了需要多用户支持的建议.整个团队或者整个公司都使用同一个密码来管理非常的 ...

  6. 开源进展 | WeBASE v3.0发布,支持适配FISCO BCOS v3.0稳定版

    WeBASE(WeBank Blockchain Application Software Extension) 是在区块链应用和FISCO BCOS底层之间搭建的一套通用组件,围绕交易.合约.密钥管 ...

  7. Git 2.25.0发布,支持部分clone、稀疏checkout

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者 | oschina 来源 | https://www.osc ...

  8. Ruby 2.2.0发布,支持增量式垃圾收集和符号的垃圾收集

    Ruby 2.2.0已于2014年12月25日发布,这是给Ruby开发者的圣诞礼物.该版本的亮点包括一些垃圾收集方面的改进:引入了一个新的增量式垃圾收集算法,支持对符号(Symbol)进行垃圾收集.核 ...

  9. Apache Kudu 1.9.0 发布,支持位置感知

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   Apache Kudu 1.9.0 发布了,Kudu 是一个支持结构化数据的开源存储引擎,具有低延迟随机读取与高效分析读取模式.它基于 Ap ...

最新文章

  1. 函数传参涉及到副本的创建与拷贝问题分析
  2. 连接数process与会话session
  3. 1.1 Java包装类、装箱和拆箱
  4. 【转载】linux-查询rpm包相关安装、卸载脚本
  5. springMVC通过spring.xml对属性注入bean值(工厂模式)
  6. freopen()的重定向打开或者关闭
  7. linux做一个客户端与WemosD1作为服务器的无线通信(局域网通信)
  8. BootstrapTable单元格宽度调整:colResizable()方法
  9. Windows 命令行基础(博主推荐)
  10. Docker 运行Tensorboard 和 jupyter的正确方法
  11. ISAPI报警模块流程
  12. matlab实现单极性,怎样用matlab画单极性非归零码传输码型示意图?请各位大虾赐教...
  13. python画江苏_江苏高考数学再现算法流程图!学过编程的孩子都说So easy!
  14. Jetson TX2使用记录
  15. Freebase Data Dump结构初探
  16. 高通ISP流程中,ADRC Gain与GTMLTM的对应关系
  17. pytorch实现bnn
  18. LFS(Linux From Scratch)构建过程全记录(一):准备工作
  19. TypeScript 学习笔记(四)--- 泛型(Generics)
  20. BrowserSync 本地服务器的起用

热门文章

  1. CENTOS6.4安装vnc-server
  2. 制作巴士电台彩蛋一枚
  3. GAE 随机获取实体
  4. [Docker]记一次使用jenkins将镜像文件推送到Harbor遇到的问题
  5. python 垃圾回收详解
  6. hinton教授的本科生课程CSC321-机器学习中的神经网的笔记
  7. QWaiteCondition思考3
  8. arguments.callee()事例 参数检验
  9. 使用CEOP增强的Internet Explorer 8帮助保护您的孩子
  10. plex实现流媒体服务器_Plex继续远离服务器,提供网络节目