【默認加入持久化機制,防止消息丟失,v0.0.3】對RabbitMQ.Client進行一下小小的包裝,絕對實用方便

  RabbitMQ是一個老牌的非微軟的消息隊列組件,通常來講應該能知足中小型公司對消息隊列生產的需求,平時咱們在.NET開發環境下運用它是可能會須要RabbitMQ.Client的SDK庫,此庫是官網提供,目前最新發布版本是v4.1.3。在咱們對接項目時有時須要碰到對接上的注意,隨之而來感受對官方提供的SDK客戶端還能夠進行一次包裝開發。git

  Nuget安裝命令:Install-Package RabbitMQ.Client.Wrapgithub

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

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

  如下就是對包裝後的代碼示例:  spa

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) => {   //處理消息   //處理異常 });

須要對日誌記錄自定義化,只須要註冊你本身的日誌記錄實現類code

    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在右上角的介紹裏blog

相關文章
相關標籤/搜索