当前位置: 首页 > news >正文

郑州网站推广汉狮网络建设主题网站的顺序一般是

郑州网站推广汉狮网络,建设主题网站的顺序一般是,wordpress 判断语句,国外做各种趣味实验的网站前言 在分布式系统中,由于各个系统服务之间的独立性和网络通信的不确定性,要确保跨系统的事务操作的最终一致性是一项重大的挑战。今天给大家推荐一个.NET开源的处理分布式事务的解决方案基于 .NET Standard 的 C# 库:CAP。 CAP项目介绍 CA…

前言

在分布式系统中,由于各个系统服务之间的独立性和网络通信的不确定性,要确保跨系统的事务操作的最终一致性是一项重大的挑战。今天给大家推荐一个.NET开源的处理分布式事务的解决方案基于 .NET Standard 的 C# 库:CAP。

CAP项目介绍

CAP 是一个基于 .NET Standard 的 C# 库,它是一种处理分布式事务的解决方案,同样具有 EventBus 的功能,它具有轻量级、易使用、高性能等特点。CAP 是一个EventBus,同时也是一个在微服务或者SOA系统中解决分布式事务问题的一个框架。它有助于创建可扩展,可靠并且易于更改的微服务系统。

什么是 EventBus?

事件总线是一种机制,它允许不同的组件彼此通信而不彼此了解。组件可以将事件发送到Eventbus,而无需知道是谁来接听或有多少其他人来接听。组件也可以侦听Eventbus上的事件,而无需知道谁发送了事件。这样,组件可以相互通信而无需相互依赖。同样,很容易替换一个组件。只要新组件了解正在发送和接收的事件,其他组件就永远不会知道。

CAP架构预览

CAP支持的存储

SQL Server、MySQL、PostgreSql、MongoDB、In-Memory Storage。

CAP 支持以下几种运输方式

RabbitMQ、Kafka、Azure Service Bus、Amazon SQS、NATS、In-Memory Queue、Redis Streams、Apache Pulsar。

怎么选择运输器

项目源码

快速开始

安装DotNetCore.CAP Nuget包

CAP 支持主流的消息队列作为传输器:

我本地安装的是DotNetCore.CAP.RabbitMQ。

//你可以按需选择下面的包进行安装:
PM> Install-Package DotNetCore.CAP.Kafka
PM> Install-Package DotNetCore.CAP.RabbitMQ
PM> Install-Package DotNetCore.CAP.AzureServiceBus
PM> Install-Package DotNetCore.CAP.AmazonSQS
PM> Install-Package DotNetCore.CAP.NATS
PM> Install-Package DotNetCore.CAP.RedisStreams
PM> Install-Package DotNetCore.CAP.Pulsar

CAP 提供了主流数据库作为存储:

我本地安装的是DotNetCore.CAP.MongoDB。

// 按需选择安装你正在使用的数据库:
PM> Install-Package DotNetCore.CAP.SqlServer
PM> Install-Package DotNetCore.CAP.MySql
PM> Install-Package DotNetCore.CAP.PostgreSql
PM> Install-Package DotNetCore.CAP.MongoDB

配置CAP到 Program.cs 文件中,如下:

            builder.Services.AddCap(x =>{//如果你使用的 EF 进行数据操作,你需要添加如下配置://配置数据库上下文x.UseEntityFramework<AppDbContext>();//如果你使用的 MongoDB,你可以添加如下配置:x.UseMongoDB("ConnectionStrings");  //注意,仅支持MongoDB 4.0+集群//CAP RabbitMQ 配置x.UseRabbitMQ(rab => {rab.HostName = "192.0.1.1";rab.Password = "123456";rab.Port = 5672;rab.UserName = "123456";});});

发布

在 Controller 中注入 ICapPublisher 然后使用 ICapPublisher 进行消息发送。

public class PublishController : Controller
{private readonly ICapPublisher _capBus;public PublishController(ICapPublisher capPublisher){_capBus = capPublisher;}//不使用事务[Route("~/without/transaction")]public IActionResult WithoutTransaction(){_capBus.Publish("xxx.services.show.time", DateTime.Now);// Publish delay message_capBus.PublishDelayAsync(TimeSpan.FromSeconds(delaySeconds), "xxx.services.show.time", DateTime.Now);return Ok();}//Ado.Net 中使用事务,自动提交[Route("~/adonet/transaction")]public IActionResult AdonetWithTransaction(){using (var connection = new MySqlConnection(ConnectionString)){using (var transaction = connection.BeginTransaction(_capBus, autoCommit: true)){//业务代码_capBus.Publish("xxx.services.show.time", DateTime.Now);}}return Ok();}//EntityFramework 中使用事务,自动提交[Route("~/ef/transaction")]public IActionResult EntityFrameworkWithTransaction([FromServices]AppDbContext dbContext){using (var trans = dbContext.Database.BeginTransaction(_capBus, autoCommit: true)){//业务代码_capBus.Publish("xxx.services.show.time", DateTime.Now);}return Ok();}
}

订阅

Action Method

在 Action 上添加 CapSubscribeAttribute 来订阅相关消息。

public class PublishController : Controller
{[CapSubscribe("xxx.services.show.time")]public void CheckReceivedMessage(DateTime datetime){Console.WriteLine(datetime);}
}
Service Method

如果你的订阅方法没有位于 Controller 中,则你订阅的类需要继承 ICapSubscribe:


namespace xxx.Service
{public interface ISubscriberService{void CheckReceivedMessage(DateTime datetime);}public class SubscriberService: ISubscriberService, ICapSubscribe{[CapSubscribe("xxx.services.show.time")]public void CheckReceivedMessage(DateTime datetime){}}
}

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看👀,别忘了给项目一个Star支持💖。

GitHub开源地址:GitHub - dotnetcore/CAP: Distributed transaction solution in micro-service base on eventually consistency, also an eventbus with Outbox pattern

官方文档:CAP

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没🤞)。

https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

DotNetGuide技术社区交流群

  • DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目推荐、招聘资讯和解决问题的平台。
  • 在这个社区中,开发者们可以分享自己的技术文章、项目经验、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
  • 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值和成长机会。

欢迎加入DotNetGuide技术社区微信交流群👪

http://www.yayakq.cn/news/586512/

相关文章:

  • 网站直播用php怎么做的湖南省郴州市天气预报
  • 电子商务网站建设域名微信小程序源码免费下载
  • 深圳网站设计推广嘉兴模板建站系统
  • 网站安全建设需求贵阳微网站
  • 广州网站建设流程图松江网站设计
  • 织梦网站挂马教程没有货源在哪可以免费开网店
  • 网站一般怎么推广黑彩网站自己可以做么
  • 网站后台模板htmlapp生成器手机版
  • 柳州网站建设工作室设计素描
  • 中国建设教育协会报名网站犀牛云做网站骗人
  • 用hexo做网站网站图片如何做链接
  • 福建手机版建站系统开发kompozer wordpress
  • 银川哪里做网站制作网站要找什么公司
  • 上海网站策划外贸平台哪个网站最好知乎
  • 顺义区做网站的公司做电影免费ppt模板下载网站
  • 建站宝盒后台移动app开发外包公司
  • 建立网站设计住房城乡与建设厅网站首页
  • 自己如何建企业网站网站托管 建设方案
  • 物流网站建设规划总结门头沟富阳网站建设
  • 做商铺的网站有那些企业网站优化方案的策划
  • 网站如何做reference找大学生做网站
  • 出台网站集约化建设通知棋牌游戏网站开发
  • 长春建设银行网站同城app模板
  • 网站的内容做证据观点建立一个简单的企业官网
  • 谁家做网站比较好做解密类网站可行
  • 学校网站建设方案图片wordpress 怎么去掉index.php
  • 红花岗区建设局网站html5手机网站免费模板
  • 专门做定制的网站网站开发 瀑布结构
  • 太原微网站建设成品网站短视频源码搭建免费
  • 湘乡网站建设网络营销理论与实务