一个.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();
//开启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的更多相关文章

  1. Spring Cloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus

    在本教程第三讲Spring Cloud 入门教程(三): 配置自动刷新中,通过POST方式向客户端发送/refresh请求, 可以让客户端获取到配置的最新变化.但试想一下, 在分布式系统中,如果存在很 ...

  2. Spring Cloud Bus 消息总线 RabbitMQ

    Spring Cloud Bus将分布式系统中各节点通过轻量级消息代理连接起来. 从而实现例如广播状态改变(例如配置改变)或其他的管理指令. 目前唯一的实现是使用AMQP代理作为传输对象. Sprin ...

  3. Spring Cloud(十一)高可用的分布式配置中心 Spring Cloud Bus 消息总线集成(RabbitMQ)

    详见:https://www.w3cschool.cn/spring_cloud/spring_cloud-jl8a2ixp.html 上一篇文章,留了一个悬念,Config Client 实现配置的 ...

  4. spring cloud bus 消息总线 动态刷新配置文件 【actuator 与 RabbitMQ配合完成】

    1.前言 单机刷新配置文件,使用actuator就足够了 ,但是 分布式微服务 不可能是单机 ,将会有很多很多的工程 ,无法手动一个一个的发送刷新请求, 因此引入了消息中间件 ,常用的 消息中间件 是 ...

  5. 如何优雅的使用RabbitMQ

    RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具.消息队列的使用场景大概有3种: 1.系统集成,分布式系统的设 ...

  6. RabbitMQ学习系列(六): RabbitMQ 高可用集群

    前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/ca ...

  7. RabbitMQ学习系列(四): 几种Exchange 模式

    上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ.今天说些理论的东西,Exchange 的几种模式. AMQP协议中的核心思 ...

  8. RabbitMQ学习系列(三): C# 如何使用 RabbitMQ

    上一篇已经讲了Rabbitmq如何在Windows平台安装,还不了解如何安装的朋友,请看我前面几篇文章:RabbitMQ学习系列一:windows下安装RabbitMQ服务 , 今天就来聊聊 C# 实 ...

  9. Rabbitmq集群高可用测试

    Rabbitmq集群高可用 RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡. Rabbit模式大概分为以下三种:单一模式.普通模 ...

随机推荐

  1. ChannelHandler,ChannelHandlerContext,ChannelPipeline

    本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法 首 ...

  2. Redis实战——简单介绍

    出自:https://www.cnblogs.com/moonlightL/p/7364107.html Redis简单介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能, ...

  3. Spring -- <context:component-scan>使用说明

    在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类 ...

  4. python安装库(Windows下)

    首先确保安装了pip,并且pip也加入了系统path路径: pip下载:https://pypi.python.org/pypi/pip#downloads 下载Python对应的包:(http:// ...

  5. 使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题

    平时我们开发使用的是32位的PC机,所以安装的也是Oracle32位的客户端.但是一般服务器都是64位的,安装的也是64位的Oracle客户端,如果要部署使用Oracle.DataAccess连接Or ...

  6. ubuntu16.04 qt opencv3.4

    #------------------------------------------------- # # Project created by QtCreator 2018-12-12T14:53 ...

  7. Tomcat内存溢出及大小调整

    一.在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常.这主要是由于应 ...

  8. 粗略了解fill与fill_n

    以前只知道数组赋值时用memset(): 而这几天却了解到了一个函数:fill(); 感觉以后会有用吧... std::fill template <class ForwardIterator, ...

  9. js 获取ur参数 只要问号后面的那段传进url

    //获取url中的参数 function getUrlParam (pName, win) { var sUrl; if (typeof (win) == 'string') { sUrl = win ...

  10. JS对象转URL参数(原生JS和jQuery两种方式)

    转自:点击打开链接 现在的js框架将ajax请求封装得非常简单,例如下面: $.ajax({ type: "POST", url: "some.php", da ...