码迷,mamicode.com
首页 > 其他好文 > 详细

RabbitMQ.Bus

时间:2018-07-25 15:15:14      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:person   sum   http   org   san   关闭   默认   sem   services   

一个.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;
    }
}

 

发送消息
[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" });
   }
}

 

RabbitMQ.Bus

标签:person   sum   http   org   san   关闭   默认   sem   services   

原文地址:https://www.cnblogs.com/luacloud/p/9365875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!