当前位置: 欣欣网 > 码农

.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技能

点赞和在看就是最大的支持❤️