RabbitMQ是一个老牌的非微软的消息队列组件,一般来说应该能满足中小型公司对消息队列生产的需求,平时我们在.NET开发环境下运用它是可能会需要RabbitMQ.Client的SDK库,此库是官网提供,目前最新发布版本是v4.1.3。在我们对接项目时有时需要碰到对接上的注意,随之而来感觉对官方提供的SDK客户端还可以进行一次包装开发。

  Nuget安装命令:Install-Package RabbitMQ.Client.Wrap

  GitHub地址:https://github.com/rjf1979/RabbitMQ.Client.Wrap

  Nuget命令:Install-Package RabbitMQ.Client.Wrap

  以下就是对包装后的代码示例:  

string queueName = "queue-demo";
var client = Client.Build("admin", "", "VHostName", "192.168.xxx.xxx",5672);
client.Publisher.QueueDeclare(queueName);
string messageData = "test-" + DateTime.Now;
//支持异步发布
await mqClient.Publisher.Publish(queueName, messageData);

//同样Client对象可以复用订阅
var tag = client.Subscriber.Subscribe(queueName, message =>
  {
    Console.WriteLine($"Recevice Data > {message},Time > {DateTime.Now}");
    return true;
  });
Console.WriteLine($"Subscriber Tag > {tag} , Time > {DateTime.Now}");

如果需要异常事件记录

//发布者注册一个异常事件处理,此处的注册异常事件,只有在发生异常情况下会触发
client.Publisher.RegisterExceptionHandler((message, exception) =>
{
  //处理消息   //处理异常 });

需要对日志记录自定义化,只需要注册你自己的日志记录实现类

    class MyLogger:RabbitMQ.Client.Wrap.Interface.ILog
{
public void Info(string message, Exception exception = null, params object[] args)
{
//实现你的记录日志代码
} public void Warn(string message, Exception exception = null, params object[] args)
{
//实现你的记录日志代码
} public void Error(string message, Exception exception = null, params object[] args)
{
//实现你的记录日志代码
} public void Fatal(string message, Exception exception = null, params object[] args)
{
//实现你的记录日志代码
} public void Debug(string message, Exception exception = null, params object[] args)
{
//实现你的记录日志代码
//此日志会在#if DEBUG下会运行
} public void Trace(string message, Exception exception = null, params object[] args)
{
//实现你的记录日志代码
//此日志会在#if TRACE下会运行
}
}

//把实现类注册进去

Logger.RegisiterLogger(new MyLogger());

好了,介绍到这里,大家如果有兴趣可以去nuget上安装运用,如果在使用当中有问题可以及时联系我,我的QQ在右上角的介绍里

    

【默认加入持久化机制,防止消息丢失,v0.0.3】对RabbitMQ.Client进行一下小小的包装,绝对实用方便的更多相关文章

  1. Redis的持久化机制与内存管理机制

    1.概述 Redis的持久化机制有两种:RDB 和 AOF ,这两种机制有什么区别?正式环境应该采用哪种机制? 我们的服务器内存资源是有限的,如果内存被Redis的缓存占满了怎么办?这就要看Redis ...

  2. ActiveMQ的几种消息持久化机制

    为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式 ...

  3. ActiveMQ的消息持久化机制

    为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式 ...

  4. Rabbit MQ 消息确认和持久化机制

    一:确认种类 RabbitMQ的消息确认有两种.一种是消息发送确认,用来确认生产者将消息发送给交换器,交换器传递给队列的过程中消息是否成功投递.发送确认分为两步,一是确认是否到达交换器,二是确认是否到 ...

  5. 探秘 RocketMQ 消息持久化机制

    我们知道 RocketMQ 是一款高性能.高可靠的分布式消息中间件,高性能和高可靠是很难兼得的.因为要保证高可靠,那么数据就必须持久化到磁盘上,将数据持久化到磁盘,那么可能就不能保证高性能了. Roc ...

  6. ActiveMQ持久化机制和JMS可靠消息

    1.ActiveMQ持久化机制 1.1 JDBC将数据持久化到数据库 1.2 AMQ生成日志文件 1.3 KahaDB:本次磁盘生成数据文件(默认) 1.4 LevelDB:谷歌K/V数据库 1.5 ...

  7. Redis 学习之持久化机制、发布订阅、虚拟内存

    一.持久化机制 Redis是一个支持持久化的内存数据库,redis会经常将内存中的数据同步到硬盘上来保证数据持久化,从而避免服务器宕机数据丢失问题,或者减少服务器内存消耗提高性能. 持久化方式: 1. ...

  8. RabbitMQ-从基础到实战(2)— 防止消息丢失

    转载请注明出处 1.简介 RabbitMQ中,消息丢失可以简单的分为两种:客户端丢失和服务端丢失.针对这两种消息丢失,RabbitMQ都给出了相应的解决方案. 2.防止客户端丢失消息 如图,生产者P向 ...

  9. RabbitMQ防止消息丢失

    转载请注明出处 0.目录 RabbitMQ-从基础到实战(1)— Hello RabbitMQ RabbitMQ-从基础到实战(3)— 消息的交换 1.简介 RabbitMQ中,消息丢失可以简单的分为 ...

随机推荐

  1. easyui-combotree选中指定的值

    选中根节点: //station_id为combotree控件id var station = $('#station_id').combotree('tree').tree('getRoots'); ...

  2. git 本地同步分支数,删除远程已经删除掉的多余分支

    git remote show orgin  (展示当前本地分支和远程上的分支差异,多余分支后会被标注 use 'git remote prune' to remove.) git remote pr ...

  3. SELECT 语句

    常见表的操作 查看数据库的表   show  table 查看表结构     desc 表名 删除表   drop table表 修改表的结构 添加列  alter   table 表名 add 列名 ...

  4. ES6 常用语法

    1.let 定义变量 1.与var 类似 用于声明一个变量 let userName='kobe' 2.特点 1.在块作用域内有效 2.不会吃重复定义变量 3.应用 1.循环遍历加监听 2.使用let ...

  5. C语言常用的编程规范

    1排版 1-1相对独立的程序块之间.变量说明之后必须加空行. 示例:如下例子不符合规范. if (!valid_ni(ni)) { ... // program code } repssn_ind = ...

  6. ndk编译ffmpeg

    #!/bin/bash NDK=/opt/android-ndk-r9d SYSROOT=$NDK/platforms/android-9/arch-arm/ TOOLCHAIN=$NDK/toolc ...

  7. [Swift]LeetCode1030. 距离顺序排列矩阵单元格 | Matrix Cells in Distance Order

    We are given a matrix with R rows and C columns has cells with integer coordinates (r, c), where 0 & ...

  8. 正交矩阵、EVD、SVD

    原文地址:https://www.jianshu.com/p/1004dd342fe2 一.正交矩阵 二.EVD 特征值分解(Eigen Value Decomposition, EVD). 对于对称 ...

  9. 熟悉使用Github,VS进行项目的开发(第二次作业)

    git地址 https://github.com/Jason98w git用户名 Jason98w 学号后5位 72323 博客地址 https://www.cnblogs.com/jason5689 ...

  10. java 网络通信传输层协议——UDP和TCP

    本文原文由作者“zskingking”发表于:jianshu.com/p/271b1c57bb0b,本次收录有改动. 1.点评 互联网发展至今已经高度发达,而对于互联网应用(尤其即时通讯网专注的即时通 ...