EasyNetQ 是一个容易使用,专门针对RabbitMQ的 .NET API。EasyNetQ是为了提供一个尽可能简洁的适用与RabbitMQ的.NET类库。

下面看下怎么集成。

1、nuget 安装

2、配置连接串

public static IBus CreateMessageBus(){// 消息服务器连接字符串var connectionString = ConfigurationManager.ConnectionStrings["RabbitMQConnString"];if (connectionString == null || connectionString.ConnectionString == string.Empty){throw new Exception("messageserver connection string is missing or empty");}return RabbitHutch.CreateBus(connectionString.ConnectionString);}

3、这边我们构建一个消息体

/// <summary>/// 消息类实体/// </summary>[Serializable]public class RabbitMQ_Message{public RabbitMQ_Message(){MessageID = DateTime.Now.Ticks.ToString();}/// <summary>/// 消息id/// </summary>public string MessageID { get; set; }/// <summary>/// 消息标题/// </summary>public string MessageTitle { get; set; }/// <summary>/// 消息内容/// </summary>public string MessageBody { get; set; }/// <summary>/// 消息管道/// </summary>public RabbitMessageRouterEnum MessageRouter { get; set; }/// <summary>/// 游客id/// </summary>public int customerId { get; set; }/// <summary>/// 标示代码 0:正确/// </summary>public ResponseStatus result { get; set; }/// <summary>/// 消息类型/// </summary>public SuperSocketMessageTypeEnum superSocketMessageType { get; set; }/// <summary>/// 消息过期时间(毫秒)/// </summary>public int expiredMillSeconds { get; set; }}

4、发送消息

/// <summary>/// 发送消息/// </summary>public static void Publish(RabbitMQ_Message msg){创建消息busIBus bus = null;try{创建消息busbus = BusBuilder.CreateMessageBus();bus.Publish(msg, x =>{x.WithTopic($"{msg.MessageRouter.ToDescription()}.{msg.customerId}");if (msg.expiredMillSeconds > 0){x.WithExpires(msg.expiredMillSeconds);}});//通过管道发送消息               LogExtention.getInstance().WriteCustomLogAsync(msg, "RabbitMQ消息发送", "MQHelperPublish");}catch (EasyNetQException ex){LogExtention.getInstance().ErrorAsync(ex, "RabbitMQ--MQHelper--Publish发布消息时出错");//处理连接消息服务器异常 }finally{if (bus != null){bus.Dispose();//与数据库connection类似,使用后记得销毁bus对象}               }}

4、接收消息

/// <summary>/// 接收消息/// </summary>/// <param name="msg"></param>public static ISubscriptionResult Subscribe(RabbitMQ_Message msg, IProcessMessage ipro){创建消息busIBus bus = null;try{bus = BusBuilder.CreateMessageBus();//subscriptionId设置不同的话,每一个subscriptionId都会收到相同的消息,下面的写法只会有一个接收者var subscriptionResult = bus.Subscribe<RabbitMQ_Message>(msg.MessageRouter.ToDescription(), message => ipro.ProcessMsg(message),x => x.WithQueueName(msg.customerId.ToString()).WithTopic($"{msg.MessageRouter.ToDescription()}.{msg.customerId}"));//subscriptionResult.Dispose();//取消订阅return subscriptionResult;}catch (EasyNetQException ex){LogExtention.getInstance().ErrorAsync(ex, "RabbitMQ--MQHelper--Subscribe订阅消息时出错");//处理连接消息服务器异常 }finally{if (bus != null){bus.Dispose();//与数据库connection类似,使用后记得销毁bus对象}}return null;}

在EasyNetQ中如果需要生产者确认功能,则需要在Rabbitmq的连接配置中设置publisherConfirms=true,这将会开启自动确认。在使用高级api定义交换机和队列时可以自己定义多种参数,比如消息是否持久化,消息最大长度等等。

EasyNetQ操作RabbitMQ相关推荐

  1. 使用EasyNetQ组件操作RabbitMQ消息队列服务

    RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...

  2. .NET操作RabbitMQ组件EasyNetQ使用中文简版文档。

    本文出自EasyNetQ官方文档,内容为自己理解加翻译.文档地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Quick-Start EasyNetQ简介 Ea ...

  3. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  4. Python之操作RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...

  5. 解决使用RabbitTemplate操作RabbitMQ,发生The channelMax limit is reached. Try later.问题

    解决使用RabbitTemplate操作RabbitMQ,发生The channelMax limit is reached. Try later.问题 参考文章: (1)解决使用RabbitTemp ...

  6. python操作RabbitMQ

    RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue)的开源实现的产品,RabbitMQ是一个消息代理,从"生产者" ...

  7. Python菜鸟之路:Python基础-Python操作RabbitMQ

    RabbitMQ简介 rabbitmq中文翻译的话,主要还是mq字母上:Message Queue,即消息队列的意思.rabbitmq服务类似于mysql.apache服务,只是提供的功能不一样.ra ...

  8. rabbitmq python_Python操作RabbitMQ服务器实现消息队列的路由功能

    Python使用Pika库(安装:sudo pip install pika)可以操作RabbitMQ消息队列服务器(安装:sudo apt-get install rabbitmq-server), ...

  9. python 操作RabbitMQ

    pip install pika使用API操作RabbitMQ基于Queue实现生产者消费者模型View Code 对于RabbitMQ来说,生产和消费不再针对内存里的一个Queue对象,而是某台服务 ...

最新文章

  1. 同步SQL Server 2000 数据库
  2. 使用chardet判断编码方式
  3. 问题 “cell 出栈 selectBox 已选的图标,被释放掉,再次进入屏幕时,没有了已选图标 ” 解决方案...
  4. Webservice开发之xsd中开发登录请求的响应接口
  5. 根据需要通过代码的方式加载js文件
  6. Java版大顶堆的实现
  7. 【Java】java YYYY-MM-DD与 yyyy的区别,有重大bug
  8. 内置方法 __new__ __del__
  9. sm4 前后端 加密_7 个开源的 Spring Boot 前后端分离优质项目
  10. 王振质问于谦,死得越多说明越伟大?
  11. 计算机专业抑郁症多,社工专业毕业的我得了抑郁症,我的痛苦别人难以理解?...
  12. 计算机右键菜单太多,文件右键太多?win10 ghost小方法删除右键多余菜单
  13. 【数据挖掘】数据挖掘总结 ( K-Means 聚类算法 | 一维数据的 K-Means 聚类 ) ★
  14. html 轮播图左右切换代码,js实现左右轮播图
  15. 计算机桌面时间设置,桌面的时钟怎么设置
  16. 405服务器响应失败,服务器返回HTTP响应代码:405
  17. maya cmds 笔记_1
  18. 幼儿剑桥英音版Super Safari123级别学生书PDF+练习册PDF+教师书PDF+白板课件
  19. Opencv中视频播放与进度控制
  20. 人人都能学会数据分析-笔记

热门文章

  1. nagios-3.4.3搭建
  2. JavaScript面向对象-静态方法-私有方法-公有方法-特权方法,学习
  3. 定制安装centos6.4系统 上汽集团线上环境
  4. 【转】用Fiddler做抓包分析详解
  5. Java通过Executors提供四种线程池
  6. Python 全栈开发基础
  7. Robot Framework 教程 (3) - Resource及关键字 的使用
  8. Ruby 学习笔记3
  9. [ActionScript 3.0] 安全沙箱的类型sandboxType,判断当前程序是AIR还是web程序
  10. C#编程中的66个好习惯,你有多少个?(转)