前言

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

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

总览

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

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

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

本次在 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 的项目( 查看这里 )中添加 CAP 的 Instrumentation 即可。

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

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

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

改进 NATS Jetstream 对通配符的支持

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

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

Azure ServiceBus 支持自定义 Header

在这个版本中,Azure ServiceBus 也提供了 CustomHeaders 配置项用于接收来自于异构系统中发送的消息。

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

感谢 @mviegas 对此提交的PR。

其他

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

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

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

总结

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

如果你喜欢这个项目,可以通过下面的连接点击 Star 给我们支持。

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


本文地址:http://www.cnblogs.com/savorboard/p/cap-6-0.html

作者博客:Savorboard

本文原创授权为:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本

CAP 6.0 版本发布通告 - 支持 OpenTelemetry的更多相关文章

  1. CAP 3.0 版本发布通告

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

  2. CAP 5.0 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 5.0 版本正式版.同时我们也很高兴的告诉你 CAP 已经有越来越多的用户并且变得越来越流行. 在 5.0 版本中,我们主要致力于更好的支持 .NET 5 以 ...

  3. CAP 3.1 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 3.1 版本正式版.同时我们也很高兴的告诉你 CAP 在 GitHub 已经突破了 4000 Star. CAP 3000 Star 还是去年8月份的时候,最 ...

  4. CAP 5.1 版本发布通告 - 你期待的 Redis 来了

    前言 今天,我们很高兴宣布 CAP 发布 5.1 版本正式版,在这个版本里我们同样引入了更多令人激动的新特性和改进,同时也得到越来越多人的喜爱. 得益于社区的反馈和贡献者的支持,在过去的两个月里,我们 ...

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

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

  6. CAP 2.6 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 2.6 版本正式版.同时我们也很高兴的告诉你 CAP 在 GitHub 已经突破了3000 Star. 自从上次 CAP 2.5 版本发布 以来,已经过去了几 ...

  7. CAP 5.2 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 5.2 版本正式版,在这个版本中,我们主要致力于更好的优化使用体验以及支持新的 Transport,同时在该版本也进行了一些 bug 修复的工作. 自从 5. ...

  8. CAP 6.1 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 6.1 版本正式版,在这个版本中我们主要针对目前已经发现的几个BUG进行了修复了以及添加了一些小特性. 那么,接下来我们具体看一下吧. 总览 可能有些人还不知 ...

  9. CAP 6.2 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 6.2 版本正式版,在这个版本中我们主要做了一些功能优化,以及针对目前已经发现的几个 BUG 进行了修复了. 那么,接下来我们具体看一下吧. 总览 可能有些人 ...

随机推荐

  1. Java 使用slf4j记录日志

    引入依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12< ...

  2. 【Python】【Algorithm】排序

    冒泡排序 dic = [12, 45, 22, 6551, 74, 155, 6522, 1, 386, 15, 369, 15, 128, 123, ] for j in range(1, len( ...

  3. Docker从入门到精通(一)——初识

    1.Docker 是什么? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容 ...

  4. Reids安全加固

    目录 一.简介 二.加固方案 一.简介 Redis 因配置不当存在未授权访问漏洞,可以被攻击者恶意利用. 在特定条件下,如果Redis以root身份运行,黑客可以给root账号写入SSH公钥文件,直接 ...

  5. 用 Go 实现一个 LRU cache

    前言 早在几年前写过关于 LRU cache 的文章: https://crossoverjie.top/2018/04/07/algorithm/LRU-cache/ 当时是用 Java 实现的,最 ...

  6. JDK安装错误问题总结。

    Windows10安装JDK,测试java -version时出现could not open XXX\jvm.cfg的解决方法. 1. 切记,环境变量修改后重新测试时一定要关闭命令再重新打开才生效 ...

  7. LuoguP6850 NOI 题解

    Content 小 L 参加了 \(\texttt{NOI}\),现在他告诉你九个数 \(a,b,c,d,e,f,g,h,i\),分别表示--笔试作对的题数.D1T1.D1T2.D1T3.D2T1.D ...

  8. LuoguP7593 凑数 题解

    Content 给定 \(n\) 个整数 \(1,2,\dots,n\),请问是否能从这 \(n\) 个数中恰好选 \(k\) 个数,使得这 \(k\) 个数的和为 \(s\). 数据范围:\(t\) ...

  9. 第一周python学习总结

    多行注释:格式化输出内容,用{}传递变量内容 执行输出 while: for XXX: if: range(satar,end,步长) break continue input 等于python2里面 ...

  10. Python软件目录结构

    目录组织方式 关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构.在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论. 这里面说的已经很好了, ...