zoukankan      html  css  js  c++  java
  • 【默认加入持久化机制,防止消息丢失,v0.0.3】对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

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

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

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

        
  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number (考虑负数的情况)
    8. String to Integer (整数的溢出)
    7. Reverse Integer (整数的溢出)
    LeetCode Minimum Size Subarray Sum
    LeetCode Course Schedule II
    Linux 文件缓存 (一)
    LeetCode Tries Prefix Tree
    Linux : lsof 命令
    LeetCode Binary Tree Right Side View
  • 原文地址:https://www.cnblogs.com/rjf1979/p/6900033.html
Copyright © 2011-2022 走看看