日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【默认加入持久化机制,防止消息丢失,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在右上角的介紹里

轉載于:https://www.cnblogs.com/rjf1979/p/6900033.html

總結

以上是生活随笔為你收集整理的【默认加入持久化机制,防止消息丢失,v0.0.3】对RabbitMQ.Client进行一下小小的包装,绝对实用方便...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。