对RabbitMQ.Client进行一下小小的包装,绝对实用方便

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对RabbitMQ.Client进行一下小小的包装,绝对实用方便相关的知识,希望对你有一定的参考价值。

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

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

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

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

string queueName = "queue-demo";
var client = Client.Build("admin", "123456", "VHostName", "192.168.xxx.xxx");
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在右上角的介绍里

    

以上是关于对RabbitMQ.Client进行一下小小的包装,绝对实用方便的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMq之优先队列

(记录)整合spring cloud bus+rabbitmq后,config server/client启动报错及解决方式

使用 rabbitmq 进行的 8 小时 RPC 调用。这听起来很疯狂,但有啥问题吗?

RabbitMQ基础理解

消息中间件-----RabbitMq消息可靠传递

RabbitMQ .NET Client 实战实验