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

很久沒有寫了,最近項目用到RabbitMQ,找了一些資料試驗,最後終於成功了,把安裝配置的步驟分享給你們。數據庫

1、Erlang
安裝具體過程:瀏覽器

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

 

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

 

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

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

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

啓動startcode


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

或是直接找到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

相關文章
相關標籤/搜索