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