本文由网友【Sky.楚子航】投稿
.NET Aspire[1] 是微软推出的一个技术栈,旨在简化云原生应用的开发和管理。以下是关于.NET Aspire的详细介绍:
总的来说,.NET Aspire是微软为简化云原生应用开发和管理而推出的一项重要技术,它充分利用了.NET平台的优势,为开发者提供了一种高效、统一的解决方案。
我从preview1 - preview6(目前最新 2024/5/1) 一直都有使用,在第一版的时候我就用它放入了我的一个微服务中(https://gitee.com/SkyNingDuan/PublicActivityServices.git),一直迭代更新。
在其中,我一直使用外部RabbitMQ的方式给我的微服务传递消息(用的是Zack.EventBus[2]),但是它一直有直接通过Aspire方式创建RabbitMQ 容器在你的项目中使用, 我一直想着用杨中科老师的框架为指导,开发一个在Aspire环境下的EventBus, 但是一直拖着(已经有现成的了,就一直不想走出舒适区)最后经过不断的自我抗争,simpleUseAspireRabbitmq第一版开发好了,功能比较简单,也比较好用,如果大家热情高的话, 后面再加便是。欢迎大家拥抱新技术,有任何问题都可以提issue和我互动,源代码地址https://github.com/skyDuanXianBing/SimpleUseAspireRabbitMQ.git ,NuGet名称:SimpleUseAspireRabbitMQ[3]) (目前由于Aspire 也是处于预览版,所以这个也是预览版,后面有任何改进也会跟进的)。
在aspire.host中安装Aspire.Hosting.RabbitMQ
包,在program.cs
中创建RabbitMQ
容器,并且在你要使用RabbitMQ的项目后 WithReference
RabbitMQ
容器:
在你要使用RabbitMQ
项目的program.cs中分别加入builder.EventConfiguration("rabbitmq", "myexchange");
(第一个参数是RabbitMQ
容器名称,第二是交换机名称),app.RegisterRabbitmqEvent();
来注册服务:
使用IEventBus
发送消息,目前仅支持 string/泛型数据(都会转换成json,后面在反序列化),publish第一个参数是队列名称:
一定要定义在网站项目中(因为是通过反射网站项目拿到全部的处理类),继承IEventJsonHandler
/IEventStringHandler
分别实现就行。
一定要在处理类上贴 [event("XXX")]
, 这个attribute 用来指示接收哪个队列信息:
使用就是这么简单,欢迎留言交流。
参考资料
[1]
.NET Aspire: https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview
[2]
Zack.EventBus: https://www.nuget.org/packages/Zack.EventBus
[3]
SimpleUseAspireRabbitMQ: https://www.nuget.org/packages/SimpleUseAspireRabbitMQ/