RabbitMQ是一個老牌的非微軟的消息隊列組件,一般來說應該能滿足中小型公司對消息隊列生產的需求,平時我們在.NET開發環境下運用它是可能會需要RabbitMQ.Client的SDK庫,此庫是官網提供,目前最新發佈版本是v4.1.3。在我們對接項目時有時需要碰到對接上的註意,隨之而來感覺對官方提供 ...
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在右上角的介紹里