RabbitMQ.Bus
一个.netcore下的,十分简单的rabbitmq封装,基于RabbitMQ.Client
Nuget
https://www.nuget.org/packages/RabbitMQ.Bus/
https://www.nuget.org/packages/RabbitMQ.Bus.Autofac/Git
采用autofac进行DI的管理
目前仅支持Topic模式
public IServiceProvider ConfigureServices(IServiceCollection services) { var AssemblyName = typeof(Startup).GetTypeInfo().Assembly.GetName().Name; services.AddMvc(); services.AddRabbitMQBus("amqp://guest:guest@192.168.0.252:5672/"); //OR services.AddRabbitMQBus("amqp://guest:guest@192.168.0.252:5672/", options => { //添加客户端可读名称 options.ClientProvidedName = AssemblyName; //关闭网络自动恢复 options.AutomaticRecoveryEnabled = false; //关闭持久化消息 options.Persistence = false; //无消费者时消息重新发送的间隔时间 options.NoConsumerMessageRetryInterval = TimeSpan.FromSeconds(3); //开启Autofac支持 //options.AddAutofac(services); //开启Autofac支持并开启butterfly支持 options.AddAutofac(services, butterfly => { butterfly.CollectorUrl = "http://192.168.0.252:9618"; butterfly.Service = AssemblyName; }); }); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { //true为自动订阅,默认false,则采用之前的订阅方式,注入RabbitMQBusService后使用Subscribe泛型进行订阅 app.UseRabbitMQBus(true); }
使用方法
在asp.net core中
订阅处理方法
[Queue(ExchangeName = "dev.ex", RoutingKey = "send.#")] public class Person { public string Name { set; get; } } public class PersonHandler : IRabbitMQBusHandler<Person> { public Task Handle(Person message) { Console.WriteLine($"收到消息:{message.Name}"); return Task.CompletedTask; } }
1 | 发送消息 |
[Route("api/v1/[controller]")] public class IndexController : Controller { private readonly IRabbitMQBus _rabbit; public IndexController(IRabbitMQBus rabbit) { _rabbit = rabbit ?? throw new ArgumentNullException(nameof(rabbit)); } [HttpPost] public async Task<IActionResult> Send() { _rabbit.Publish( new { Name = "Hello RabbitMQ" }, routingKey: "send.message",exchangeName: "dev.ex"); //OR _rabbit.Publish(new Person{ Name = "Hello RabbitMQ" }); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库