RabbitMQ消息隊列安裝和配置以及推送消息


好久沒有寫了,最近項目用到RabbitMQ,找了一些資料試驗,最后終於成功了,把安裝配置的步驟分享給大家。

一、Erlang
安裝具體過程:

1.雙擊otp_win32_R16801.exe(不同版本可能命名字不一樣),選擇next

 

2.默認安裝在C盤,建議程序安裝在非系統盤比如D盤(如果安裝在C盤可能會出現一些權限問題),修改好安裝路徑后,選next:

 

3.進入安裝程序,選擇install,即可完成安裝。

配置環境變量:在系統變量下添加 變量名:ERLANG_HOME,變量值:C:\Program Files (x86)\erl6.1

二、安裝rabbitMQ
rabbitmq-server-3.3.5.exe
安裝完成增加環境變量,雙擊path,在其后面增加:;C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin

啟動start


cmd進到sbin目錄,輸入rabbitmq-service啟動

或是直接找到rabbitMQ安裝目錄下C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin


打開瀏覽器登錄http://localhost:15672進入監視頁面說明配置成功,用戶名和密碼:guest

配置成功以后就是發送消息,采用Exchange。

 Rabbit的核心組件包含Queue(消息隊列)和Exchanges兩部分,Exchange的主要部分就是對信息進行路由,通過將消息隊列綁定到Exchange上,則可以實現訂閱形式的消息發布及Publish/Subscribe在這種模式下消息發布者只需要將信息發布到相應的Exchange中,而Exchange則自動將信息分發到不同的Queue當中。

在.Net環境下有基於RabbitMQ有很多有API的選擇,最后選擇了比較簡單的EasyNetQ(http://easynetq.com/)

    /// <summary>
    /// 消息服務器連接器
    /// </summary>
    public class BusBuilder
    {
        public static IBus CreateMessageBus()
        {
            //消息服務器連接字符串
         
            string connString = "host=172.17.186.50:5672;virtualHost=rb;username=admin;password=123";
            return RabbitHutch.CreateBus(connString);
           // return RabbitHutch.CreateBus(connectionString.ConnectionString);
        }
    }
 /// <summary>
        /// 發送消息
        /// </summary>
        public static void Publish(Message msg)
        {
            //// 創建消息bus
            IBus bus = BusBuilder.CreateMessageBus();

            try
            {
                using (var publishChannel = bus.OpenPublishChannel())   //創建消息管道 
                {
                    publishChannel.Publish(msg, x => x.WithTopic(msg.MessageRouter));  //通過管道發送消息 
                }
            }
            catch (EasyNetQException ex)
            {
                //處理連接消息服務器異常 
                // MessageHelper.WriteFuntionExceptionLog("Publish", ex.Message + " | " + ex.StackTrace);

            }

            bus.Dispose();//與數據庫connection類似,使用后記得銷毀bus對象
        }
    /// <summary>
        /// 接收消息
        /// </summary>
        /// <param name="msg"></param>
        public static void Subscribe(Message msg, IProcessMessage ipro)
        {
            //// 創建消息bus
            IBus bus = BusBuilder.CreateMessageBus();

            try
            {
                bus.Subscribe<Message>(msg.MessageID, message => ipro.ProcessMsg(message), x => x.WithTopic(msg.MessageRouter).WithArgument("x-ha-policy", "all"));

            }
            catch (EasyNetQException ex)
            {
                //處理連接消息服務器異常 
              //  MessageHelper.WriteFuntionExceptionLog("Subscribe", ex.Message + " | " + ex.StackTrace);
            }
        }

添加虛擬主機

添加用戶

 

執行代碼就會自動建立Exchanges,名字是根據項目名來的

點擊新建的Exchanges進入新建queue

最后調用接口測試發送,代碼如下:

  protected void Button1_Click(object sender, EventArgs e)
        {
            MQ.Message msg = new MQ.Message();
            msg.MessageID = "testkey";
            msg.MessageBody = "發送測試";
            msg.MessageTitle = "hello world";
            msg.MessageRouter = "testKey";
            MQ.MQHelper.Publish(msg);
            
        }
msg.MessageRouter = "testKey"——這句配置很重要,取決於上一步的Routing Key.

推送消息成功!

源碼下載:http://pan.baidu.com/s/1sjExnWh


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM