輕鬆使用aspire rabbitmq

輕鬆使用aspire rabbitmq

net aspire是微軟推出的一個技術棧,旨在簡化雲原生應用的開發和管理。

最后更新 2024/5/1 下午10:38
Sky.楚子航
预计阅读 4 分钟
分类
.NET
标签
.NET C# Aspire RabbitMQ

本文由網友【sky.楚子航】投稿

1. 了解.net aspire

.NET Aspire 是微软推出的一个技术栈,旨在简化云原生应用的开发和管理。以下是关于.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 平台的優勢,為開發者提供了一種高效、統一的解決方案。

2. 本文背景

我從 preview1 - preview6(目前最新 2024/5/1) 一直都有使用,在第一版的時候我就用它放入了我的一個微服務中(https://gitee.com/skyningduan/publicactivityservices.git),一直疊代更新。

在其中,我一直使用外部 RabbitMQ 的方式给我的微服务传递消息(用的是Zack.EventBus),但是它一直有直接通过 Aspire 方式创建 RabbitMQ 容器在你的项目中使用, 我一直想着用杨中科老师的框架为指导,开发一个在 Aspire 环境下的 EventBus, 但是一直拖着(已经有现成的了,就一直不想走出舒适区)最后经过不断的自我抗争,simpleUseAspireRabbitmq 第一版开发好了,功能比较简单,也比较好用,如果大家热情高的话, 后面再加便是。欢迎大家拥抱新技术,有任何问题都可以提 issue 和我互动,源代码地址https://github.com/skyDuanXianBing/SimpleUseAspireRabbitMQ.git ,NuGet 名称:SimpleUseAspireRabbitMQ) (目前由于 Aspire 也是处于预览版,所以这个也是预览版,后面有任何改进也会跟进的)。

3. 使用教程

3.1.創建 aspire 項目

在 aspire.host 中安装Aspire.Hosting.RabbitMQ 包,在program.cs中创建RabbitMQ容器,并且在你要使用 RabbitMQ 的项目后 WithReference RabbitMQ容器: img

3.2.註冊服務

在你要使用RabbitMQ项目的 program.cs 中分别加入builder.EventConfiguration("rabbitmq", "myexchange");(第一个参数是RabbitMQ容器名称,第二是交换机名称),app.RegisterRabbitmqEvent();来注册服务: img

3.3.測試發送消息

使用IEventBus发送消息,目前仅支持 string/泛型数据(都会转换成 json,后面在反序列化),publish 第一个参数是队列名称:

img

3.4.定義處理類

一定要定义在网站项目中(因为是通过反射网站项目拿到全部的处理类),继承IEventJsonHandler/IEventStringHandler 分别实现就行。

一定要在处理类上贴 [event("XXX")], 这个 attribute 用来指示接收哪个队列信息:

img

img

3.5.完美接收消息

img

4. 總結

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

  • 博客園連結:https://www.cnblogs.com/SkyDuan/p/18169087
Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2026/2/7

aot使用經驗總結

從項目創建伊始,就應養成良好的習慣,即只要添加了新功能或使用了較新的語法,就及時進行 aot 發布測試。

继续阅读