RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟體(亦稱面向消息的中間件)。寫消息隊列的時候用RabbitMQ比較好,但是寫的時候需要自己封裝下,自己的封裝,就需要對RabbitMQ非常瞭解,並且還需要做大量的測試,可能項目開發比較緊,時間比較多,沒有那麼多的精力和時間去研究去測 ...
RabbitMQ是實現了高級消息隊列協議(AMQP)的開源消息代理軟體(亦稱面向消息的中間件)。寫消息隊列的時候用RabbitMQ比較好,但是寫的時候需要自己封裝下,自己的封裝,就需要對RabbitMQ非常瞭解,並且還需要做大量的測試,可能項目開發比較緊,時間比較多,沒有那麼多的精力和時間去研究去測試,我們要學會拿來主義,好的東西直接用。EasyNetQ就是操作RabbitMQ一個很好的庫,用起來比較簡單,開源的。閑說:有人說我就是不用,自己寫,就是不用拿來主義,看不起拿來主義,我好想說你從北京到上海有本事不要坐車走過去,不要用手機不要用wifi,自己去發明吧。我們要站在巨人的肩上,好的東西直接用,當功能實現不了的時候,對其進行研究封裝,節省時間,提高開發效率。巨人是讓你爬上去飛的,不是讓你仰望的。
# RabbitMQ的學習
用RabbitMQ中的基本方法實現消息隊列,RabbitMq學習。這篇文章介紹了基本的訪問,這裡不再介紹,下麵直接用EasyNetQ操作RabbitMQ
#EasyNetQ生產者代碼
/// <summary> /// 使用EasyNetQ庫之後的方法 /// </summary> static void EasyNetQMethod() { using (var bus = RabbitHutch.CreateBus("host=localhost;port=32850;username=test;password=test123")) { //模擬生成者 Random rd = new Random(); while (true) { #region 核心代碼,其他可以不要 string message = $"你好,{rd.Next(10)}。"; bus.Publish(message, "hello"); #endregion Console.WriteLine("發送信息:{0}", message); //隨機休眠 Thread.Sleep(TimeSpan.FromSeconds(rd.Next(5))); } } }
#EasyNetQ消費者代碼
/// <summary> /// 使用EasyNetQ庫之後的方法 /// </summary> static void EasyNetQMethod() { using (var bus = RabbitHutch.CreateBus("host=localhost;port=32850;username=test;password=test123")) { while (true) { bus.Subscribe<string>("hello", (message) => { Console.WriteLine("接收信息:{0}", message); }); } } }
總結:對比RabbitMQ的學習例子,用EasyNetQ操作RabbitMQ,整個過程非常精簡,非常簡單,可讀性也更強。