日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

CAP带你轻松玩转ASP.NETCore消息队列

發布時間:2023/12/4 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CAP带你轻松玩转ASP.NETCore消息队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CAP是什么?

CAP是由我們園子里的楊曉東大神開發出來的一套分布式事務的決絕方案,是.Net Core Community中的第一個千星項目(目前已經1656 Start),具有輕量級、易使用、高性能等特點。


https://github.com/dotnetcore/CAP

本博客主要針對易用性這一點,展開敘述,一起看看CAP如何結合EF Core和RabbitMQ帶領小白輕松走入分布式消息隊列的世界。

準備

首先,你需要搭建一套RabbitMQ系統,搭建過程在此不再敘述,如果大家覺得麻煩,可以用我搭好的。

HostName:?coderayu.cn? UserName:guest Password:guest? (僅僅可用作實驗,數據丟失不負責)

創建Asp.Net Core 項目,并引入Nuget包

你可以運行以下下命令在你的項目中安裝 CAP。

PM> Install-Package DotNetCore.CAP

如果你的消息隊列使用的是 Kafka 的話,你可以:

PM> Install-Package DotNetCore.CAP.Kafka

如果你的消息隊列使用的是 RabbitMQ 的話,你可以:

PM> Install-Package DotNetCore.CAP.RabbitMQ

CAP 提供了 Sql Server, MySql, PostgreSQL 的擴展作為數據庫存儲:

// 按需選擇安裝你正在使用的數據庫PM> Install-Package DotNetCore.CAP.SqlServer PM> Install-Package DotNetCore.CAP.MySql PM> Install-Package DotNetCore.CAP.PostgreSql

創建DbContext

因為我采用的是EF Core,所以首先要創建一個DbContext上下文,代碼如下:

Startup配置

首先需要在ConfigureServices函數中進行相關服務的注入,對應的操作和功能解釋如下:

最后還要再Congiure中啟用CAP中間件

利用EF Core生成CAP數據庫

再程序包管理控制臺中依此輸入以下命令行

PM> Add-Migration InitPM> update-database

如果成成功執行,那么打開數據庫,就可以看到用來存儲CAP發送和接收數據的表格了。

表格中每列的含義如下:

?

消息的發送和訂閱

我們直接在ValuesController的基礎上進行改造。

在 Controller 中注入?ICapPublisher?然后使用?ICapPublisher?進行消息發送


發送消息

訂閱消息

Run

啟動程序后,首先看到CAP啟動成功

緊隨其后,消費者也就是我們的訂閱方法在RabbitMQ服務器上注冊成功。

發送消息,發送成功,如下

發送后,立即在控制臺看到了訂閱方法輸出的結果。

?

消息的失敗重試

在訂閱方法中,如果拋出異常,那么CAP就會認為該條消息處理失敗,會自動進行重試,重試次數在前方已經進行了配置。

我們把訂閱方法做一個改動,打印接收的信息到控制臺中,并拋出異常

可以看到,立即進行了三次重試

可是在前面,我們設置的失敗重試次數是5次,為什么這里只重試三次嗎?是不是要叫曉東過來改BUG了呢?當然不是。

觀察發現,CAP重試的前三次是立即進行的,而后面的重試,是每隔一段時間進行的,當在分布式通訊的過程中,可能出現了問題確實不會立即修復解決,可能過了一定時間,系統就自動恢復了,如網絡抖動。

?

CAP儀表盤

發送成功了五條消息,成功接收處理了三條,兩條處理失敗,處理失敗的任務,我們可以直接在面板中進行重新消費,可謂非常方便。

同時,處理失敗的消息,點擊消息的編號后,可以查看到消息的內容和異常原因。

?

CAP如此強大,讓消息隊列這種高大上產品操作So Easy,學會了CAP,也可以吹牛說,我也懂分布式任務處理啦。

感謝曉東開發出如此強大的項目,同時感謝.Net Core Community。

參考 CAP Github wiki

https://github.com/dotnetcore/CAP/wiki

本博客Demo代碼

https://github.com/liuzhenyulive/CAP.Demo

相關文章:

  • 分布式事務一致性解決方案

  • .NetCore Cap 結合 RabbitMQ 實現消息訂閱

  • .NET Core微服務之開源項目CAP的初步使用

  • 分布式事務,EventBus 解決方案:CAP【中文文檔】

  • CAP 介紹及使用【視頻】

  • .NET Core 事件總線,分布式事務解決方案:CAP

原文地址:?https://www.cnblogs.com/CoderAyu/p/9527012.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的CAP带你轻松玩转ASP.NETCore消息队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。