CAP 3.0 版本发布通告

前言

大家好,我们很高兴宣布 CAP 发布了 3.0 版本正式版。

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

3.0 是一个主要版本,在这个版本中我们对代码进行了大量重构,重构的目的是为了让代码保持清洁并且逻辑更加清晰易读,并且接口更加合理。作为一个主要版本并进行大量重构的前提下避免不了会带来一些破坏性更新,但这些都是值得的。

简介

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

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

本次在 CAP 3.0 版本中我们主要带来了以下破坏性改变和新特性:

破坏性改变:

  • 消息协议和存储
  • 接口改动
  • 分离 Dashboard 项目

新特性:

  • 新的发布Api
  • 新的序列化接口
  • 全新的 Diagnostics 事件和结构
  • 新的Kafka Transport配置项
  • 其他改进

下面我们就来逐一看一下吧。

破坏性改变

本次版本我们带来了一个破坏性的改变,这导致我们的 3.0 版本是不和 2.0 版本的消息兼容的,所以大家在升级的时候注意一下。

消息协议和存储

在过去,消息是被CAP经过了一次包装然后序列化为json发送到消息队列中,并且消费端也是由CAP进行解包然后反序列化为需要的对象。这样有什么问题呢? 这会导致一是无法对消息进行自定义序列化,二会导致用户在和其他客户端发送到消息队列的消息进行对接的时候需要进行额外的适配工作。

基于以上原因,我们调整了发送和消费的数据结构和存储方式。使用更加原生的方式来实现。你发送的消息将会被直接序列化后传递到消息队列的 Body 中,元数据信息将被传递到消息队列的 Header 中。

数据库的数据结构我们在新版本并没有调整,在升级的过程中需要注意的是消息都已经被消费完成了,这样就不会读到旧的消息从而出现失败的问题。

接口改动

我们重构了一些接口,大部分情况下如果你是按照推荐的方式在使用CAP那么不会对你有影响
,如果你在升级新版本的过程遇到问题,可以参考最新代码进行调整。

分离 Dashboard 项目

在这个版本中,我们将 Dashboard 相关代码分离了出去形成了一个新的项目,如果你需要使用到 Dashbaord 相关功能,可以从 NuGet 安装它。

PM> Install-Package DotNetCore.CAP.Dashboard

新的发布Api

我们在 ICapPublisher 接口新增了一个Api 用于发送带有头信息的消息。

Task PublishAsync<T>(string name, T contentObj, IDictionary<string, string> headers);

头将被直接发送的消息队列支持的消息头进行传输,通常你可以传递和消息体相关的元数据信息在里面。

默认情况下,我们发送了 消息Id,消息名称,消息类型,发送时间 等,利用此接口你可以添加更多信息到头数据中。

在消费者这边,你可以通过 [FromCap] 标签来从 CapHeader 中读取头信息,下面展示了如何在消费者方法中读取发送的头信息。

[CapSubscribe("sample.rabbitmq.mysql")]
public void Subscriber2(DateTime p, [FromCap]CapHeader header)
{
    // header["my-header"]
}

新的序列化接口

新增了 ISerializer 序列化接口,以支持对发往消息队列的消息体进行自定义序列化,你可以通过自定义实现此接口来使用你喜爱的序列化器。

默认情况下,我们使用的是 json 来对消息进行序列化,我们推荐使用此方式。因为这样你可以在 RabbitMQ Management 控制台来测试发送消息更加的方便。

全新的 Diagnostics 事件和结构

我们改进了 Diagnostics 事件和数据结构,提供对最新事件的追踪。并且我们优化了数据结构,现在可以过的更新运行时的状态信息。

我们已经针对 Skywalking 提交了 PR 已支持最新的 CAP 事件的追踪,新的追踪支持从 Controller 到消息发布,消息消费等全链路的跟踪。

新的Kafka Transport配置项

我们在 Kafka 配置项中增加了 CustomHeaders,如果你需要在消费者方法中记录当前 Kafka 消费的 Offset 或者 Partition 等信息,可以利用此扩展来添加自定义 header。

你可以在这里找到关于如何使用它。

其他改进

  • 支持重命名表名称, 参考 issue #435
  • Bug修复,具体可以查看这里的 release 日志了解更多。
  • 依赖的 NuGet 包更新

总结

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

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

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

如果你对 .NET Core 有兴趣的话可以关注我,我会定期的在博客分享我的学习心得。


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

原文地址:https://www.cnblogs.com/savorboard/p/cap-3-0.html

时间: 2024-10-11 15:57:00

CAP 3.0 版本发布通告的相关文章

Mybatis分页插件2.0版本发布

项目地址:http://git.oschina.net/free/Mybatis_PageHelper 分页插件示例: http://blog.csdn.net/isea533/article/details/24700339 v2.0更新内容: 支持Mybatis缓存,count和分页同时支持(二者同步) 修改拦截器签名,拦截Executor,签名如下: @Intercepts(@Signature(type = Executor.class, method = "query", a

Spark 1.0.0版本发布

前言 今天Spark终于跨出了里程碑的一步,1.0.0版本的发布标志着Spark已经进入1.0时代.1.0.0版本不仅加入了很多新特性,并且提供了更好的API支持.Spark SQL作为一个新的组件加入,支持在Spark上存储和操作结构化的数据.已有的标准库比如ML.Streaming和GraphX也得到了很大程度上的增强,对Spark和Python的接口也变得更稳定.以下是几个主要的改进点: 融合YARN的安全机制 Hadoop有着自己的安全机制,包括认证和授权.Spark现在可以和Hadoo

Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持

Spring.Net.FrameworkV3.0 版本发布了,感谢大家的支持. Spring.Net.Framework,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开发系统提供了强大的支持,开发人员不需要开发系统的基础功能和公共模块,框架自身提供了强大的函数库和开发包,开发人员只须集中精力专注于业务部分的开发,因此大大提高开发效率和节约开发成本.框架采用目前最主流的C#语言开发完成,支持多种数据库类型,支持WinForm与Web(用的是现在主流的MVC框架).使

意料之外,情理之中,Spring.NET 3.0 版本发布-

意料之外,情理之中,Spring.NET 3.0 版本发布- 备受社区和企业开发者广泛关注的Spring.NET在上周发布了3.0版本,并且目前已经保持着持续的更新,让我们一起来看一看他究竟发布了哪些令人激动的新特性吧! Github上的原贴地址为:https://github.com/spring-projects/spring-net. 1.引言 Spring.NET 3.0.0版本包含 一个功能齐全的控制反转容器 面向方面的编程框架 轻量级脚本的表达式语言 UI不可知的验证框架 ASP.N

开源企业IM-免费企业即时通讯-ENTBOOST V1.0版本发布

ENTBOOST正式发布V1.0版本,主要版本更新内容: PC客户端登录窗口界面增加定制功能,包括注册.游客.忘记密码和企业LOGO定制等: 苹果IOS SDK调整API接口和部分BUG修复:增加ISO APP应用源码,可以编译运行: 安卓Android SDK优化合并jar调用,增加部分接口和BUG修复:完善安卓APK产品稳定性: REST API接口增加系统配置管理等功能,满足企业二次开发,可定制.可管理: 区分社区免费版本和企业授权版本功能差别,尽量满足大部分企业免费版本的使用: Cent

[分享]牛牛截图控件2.0版本发布

牛牛截图现已完美支持多显示器及DPI放大的场景,欢迎试用. 在上一个版本发布后,收到非常多朋友的反馈,近期有了些时间,对控件进行了升级:同时对比测试了几大主流的截图功能,除了腾讯QQ最新版,其他如360.旺旺.人生日历截图等,均对DPI放大的支持不是很好,多显示器支持我仅测试了腾讯,其他的实现不清楚. 上一个版本的链接请见: http://blog.csdn.net/tragicguy/article/details/20741077 以下是牛牛截图控件2.0的相关介绍: 1. 本控件实现的基本

代码之间-论文修改助手v1.0版本发布

论文查重,是每个毕业生都要面临的一个令人头疼的问题,如果写论文不认真,很可能导致查重红一大片. 之前有帮助一些朋友修改论文降低重复率,做了一些工作后发现,国内的查重机构,如知网.维普等,大多数是基于关键字检索,如果发现某一段文字中里面关键字重合过多,就认定为抄袭. 改论文降低重复率是有一定套路的,所以我开发了这样一个软件,能够自动的将文字表述进行变换,从而帮助你快速的对你的论文进行降重,避免绞尽脑汁的去思考怎么改写. 使用方法: 1. 在待修改原文中输入待修改的句子(一般是查重报告中标红的位置)

MySQL 8.0.0 版本发布,亮点都在这了!

导读 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 可能有人会惊奇MySQL为何从5.x一下跳跃到了8.0.事实上,MySQL 5.x系列已经延续了很多年,从被Oracle收购之前就是5.1,而收购之后一直维持在5.x,比如5.5,5.6,5.7等等.其实,如果

Apache UIMA Java SDK 2.9.0 版本发布

Apache UIMA Java SDK 2.9.0 发布,腾云科技TY300.COM了解到该版本包含主要功能增强和 bug 修复,详情请看 README 和 RELEASE_NOTES 文件. 增强功能包括: CasIOUtls - a collection of general-purpose CAS load/save utilities, with support for including the type system and index definition information