當前位置: 妍妍網 > 碼農

.NET 簡化訊息佇列:Aspire 與 RabbitMQ 的最佳實踐

2024-05-18碼農

一、了解.NET Aspire

.NET Aspire(https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview) 是微軟推出的一個技術棧,旨在簡化雲原生套用的開發和管理。

以下是關於.NET Aspire的詳細介紹:

1、定義與目的

.NET Aspire是一個固定的雲端就緒技術棧,它用於構建可觀察且生產就緒的分布式應用程式。

其主要目的是簡化雲原生套用內各元素的協調和管理,幫助開發者更高效地使用.NET構建雲原生應用程式。

2、特點與優勢

.NET Aspire提供了統一的計畫格式和固定的技術棧,這有助於減少開發人員在選擇和配置技術元件時的復雜性。

它包含一組針對雲原生增強的精選元件,如服務發現、遙測、復原能力和執行狀況檢查等,這些功能都是雲原生套用開發中的關鍵要素。

.NET Aspire還提供了豐富的API和工具,支持開發人員在分布式應用程式中表達資源和依賴項,進一步簡化了雲原生套用的開發和運維工作。

3、與.NET的關系

.NET Aspire是基於.NET平台構建的,它充分利用了.NET的強大功能和生態系。

作為.NET的一部份,.NET Aspire與.NET 8及更高版本緊密整合,為開發者提供了從開發到部署的全流程支持。

4、釋出與可用性

微軟在.NET 8的預覽版中首次引入了.NET Aspire,並計劃將其作為.NET 8正式版的一部份釋出。

開發者可以在.NET 8的預覽版中嘗試使用.NET Aspire,並體驗其帶來的簡化和便捷性。

總的來說,.NET Aspire是微軟為簡化雲原生套用開發和管理而推出的一項重要技術,它充分利用了.NET平台的優勢,為開發者提供了一種高效、統一的解決方案。

二、本文背景

從preview1 - preview6(目前最新 2024/5/1) 一直都有使用,在第一版的時候我就用它放入了我的一個微服務

https://gitee.com/SkyNingDuan/PublicActivityServices.git,一直叠代更新。

在其中,我一直使用外部RabbitMQ的方式給我的微服務傳遞訊息(用的是Zack.EventBus(https://www.nuget.org/packages/Zack.EventBus),但是它一直有直接透過Aspire方式建立RabbitMQ 容器在你的計畫中使用, 我一直想著用楊中科老師的框架為指導,開發一個在Aspire環境下的EventBus, 但是一直拖著(已經有現成的了,就一直不想走出舒適區)

最後經過不斷的自我抗爭,simpleUseAspireRabbitmq第一版開發好了,功能比較簡單,也比較好用,如果大家熱情高的話, 後面再加便是。

歡迎大家擁抱新技術,有任何問題都可以提issue互動

原始碼地址

https://github.com/skyDuanXianBing/SimpleUseAspireRabbitMQ.git

NuGet名稱SimpleUseAspireRabbitMQ

https://www.nuget.org/packages/SimpleUseAspireRabbitMQ/

目前由於Aspire 也是處於預覽版,所以這個也是預覽版,後面有任何改進也會跟進的。

三、使用教程

3.1、建立Aspire計畫

在aspire.host中安裝 Aspire.Hosting.RabbitMQ 包,在 program.cs 中建立 RabbitMQ 容器,並且在你要使用RabbitMQ的計畫後 WithReference RabbitMQ 容器:

3.2、註冊服務

在你要使用 RabbitMQ 計畫的program.cs中分別加入 builder.EventConfiguration("rabbitmq", "myexchange"); (第一個參數是 RabbitMQ 容器名稱,第二是交換機名稱), app.RegisterRabbitmqEvent(); 來註冊服務:

3.3、測試發送訊息

使用 IEventBus 發送訊息,目前僅支持 string/泛型數據(都會轉換成json,後面在反序列化),publish第一個參數是佇列名稱:

3.4、定義處理類

一定要定義在網站計畫中(因為是透過反射網站計畫拿到全部的處理類),繼承 IEventJsonHandler / IEventStringHandler 分別實作就行。一定要在處理類上貼 [event("XXX")] , 這個attribute 用來指示接收哪個佇列資訊:

3.5、完美接收訊息

四、總結

透過使用 .NET Aspire,開發者可以獲得構建雲原生和分布式套用所需的工具和庫,從而能夠更快速、更可靠地開發高品質的套用。

這些工具和庫可能包括用於服務發現的工具、用於處理分布式事務的庫、用於監控和日誌記錄的元件等。透過使用這些工具,開發者可以專註於實作業務邏輯,而無需擔心底層的雲原生和分布式問題。

使用就是這麽簡單,歡迎留言交流。

- EOF -

推薦閱讀 點選標題可跳轉

看完本文有收獲?請轉發分享給更多人

推薦關註「DotNet」,提升.Net技能

點贊和在看就是最大的支持❤️