輕鬆使用aspire rabbitmq
創作初衷
aspire 是微軟基金會推出的新一代雲原生編排框架,具體請看 https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview
我從preview1 - preview6(目前最新 2024/5/1) 一直都有使用,在第一版的時候我就用它放入了我的一個微服務中(https://gitee.com/SkyNingDuan/PublicActivityServices.git),一直和它迭代.
在其中我一直使用外部rabbitmq的方式給我的微服務傳遞訊息(用的是YZK.eventbus),但是它一直有直接透過aspire方式建立rabbitmq 容器在你的專案中使用,我一直想著用楊中科老師的框架為指導,開發一個在aspire環境下的eventbus,但是一直拖著(已經有現成的了,就一直不想走出舒適區)最後經過不斷的自我抗爭,simpleUseAspireRabbitmq第一版開發好了,功能比較簡單,也比較簡單好用,如果大家熱情高的話。後面再加便是。歡迎大家擁抱新技術,有任何問題都可以提issue和我互動,原始碼地址https://github.com/skyDuanXianBing/SimpleUseAspireRabbitMQ.git ,nuget名稱:SimpleUseAspireRabbitMQ (目前由於aspire 也是處於預覽版,所以這個也是預覽版,後面有任何改進也會跟進的)
下面是使用教程
1,建立你的aspire專案,在aspire.host中安裝Aspire.Hosting.RabbitMQ 包,在program.cs中建立rabbitmq容器,並且 在你要使用rabbitmq的專案後 withreference rabbitmq容器
2,在你要使用rabbitmq專案的program.cs中分別加入builder.EventConfiguration("rabbitmq", "myexchange");(第一個引數是rabbitmq容器名稱,第二是交換機名稱)app.UseHttpsRedirection();來註冊服務
3,使用ieventbus傳送訊息 目前僅支援 string/泛型 資料(都會轉換成json,後面在反序列化)
publish第一個引數是佇列名稱
4,定義處理類,一定要定義在網站專案中(因為是透過反射網站專案拿到全部的處理類)繼承IEventJsonHandler
一定要在處理類上貼 [event("")] 這個attribute 用來指示接收哪個佇列資訊
5,完美接收訊息