RabbitMQ在Windows環境下的安裝與使用

來源:互聯網
上載者:User

標籤:直接   man   github   限制   new   解決方案   cal   set   user   

Windows下安裝RabbitMQ環境配置部署環境

部署環境:windows server 2008 r2 enterprise

官方安裝部署文檔:http://www.rabbitmq.com/install-windows.html官方文檔說明

下載erlang

原因在於RabbitMQ服務端代碼是使用並髮式語言erlang編寫的,:http://www.erlang.org/downloads或者Erlang Windows二進位檔案,雙擊.exe檔案進行安裝就好,安裝完成之後建立一個名為ERLANG_HOME的環境變數,其值指向erlang的安裝目錄,同時將%ERLANG_HOME%\bin加入到Path中,最後開啟命令列,輸入erl,如果出現erlang的版本資訊就表示erlang語言環境安裝成功;

下載RabbitMQ

:http://www.rabbitmq.com/,同樣雙擊.exe進行安裝就好(這裡需要注意一點,預設的安裝目錄是C:/Program Files/....,這個目錄中是存在空格符的,我們需要改變安裝目錄,貌似RabbitMQ安裝目錄中是不允許有空格的,我之前踩過這個大坑);

安裝RabbitMQ-Plugins

這個相當於是一個管理介面,方便我們在瀏覽器介面查看RabbitMQ各個訊息佇列以及exchange的工作情況,安裝方法是:開啟命令列cd進入rabbitmq的sbin目錄(我的目錄是:E:\software\rabbitmq\rabbitmq_server-3.6.5\sbin),輸入:rabbitmq-plugins enable rabbitmq_management命令,稍等會會發現出現plugins安裝成功的提示,預設是安裝6個外掛程式,如果你在安裝外掛程式的過程中出現了下面的錯誤:        

   解決方案是:首先在命令列輸入:rabbitmq-service stop,接著輸入rabbitmq-service remove,再接著輸入rabbitmq-service install,接著輸入rabbitmq-service start,最後重新輸入rabbitmq-plugins enable rabbitmq_management試試,我是這樣解決的;

RabbitMQ簡介

在官方頁面,下載對應的安裝包,注意,RabbitMQ安裝的時候會佔用幾個連接埠,防火牆和其他安全工具可能會阻止RabbitMQ綁定到連接埠。當這種情況發生時,RabbitMQ將無法啟動。確保可以開啟以下連接埠,當然也可以安裝好後自己通過修改設定檔來修改佔用的連接埠,然後開啟服務。

  • 4369:epmd,RabbitMQ節點和CLI工具使用的對等探索服務
  • 5672,5671:由AMQP 0-9-1和1.0用戶端使用,不帶TLS和TLS
  • 25672:Erlang分發用於節點間和CLI工具通訊,並從動態範圍分配(預設情況下限制為單個連接埠,計算為AMQP連接埠+ 20000)。有關詳細資料,請參閱網路指南。
  • 15672:HTTP API用戶端和rabbitmqadmin(僅當啟用管理外掛程式時)
  • 61613,61414:沒有和使用TLS的STOMP用戶端(只有啟用了STOMP外掛程式)
  • 1883,8883 :( MQTT用戶端沒有和帶有TLS,如果啟用了MQTT外掛程式
  • 15674:STOMP-over-WebSockets用戶端(只有啟用了Web STOMP外掛程式)
  • 15675:MQTT-over-WebSockets用戶端(僅當啟用了Web MQTT外掛程式時)

 

安裝成功後再開始菜單中可以找到所有安裝的應用以及外掛程式。

開啟服務

 

查看網頁管理

外掛程式安裝完之後,在瀏覽器輸入http://localhost:15672進行驗證,你會看到下面介面,輸入使用者名稱:guest,密碼:guest你就可以進入管理介面,當然使用者名稱密碼你都可以變的;

配置允許遠端存取

更多情況下,佇列服務往往不在我們本機上,我們需要遠程來控制RabbitMQ,但是預設是無法通過http://server-name:15672來訪問的,可以通過修改\RabbitMQ Server\rabbitmq_server-3.6.10\etc 下Rabbitmq.config來設定允許guest使用者遠程登入,具體修改為如下值,然後就到服務管理員中重啟RabbitMQ服務。

預設RabbitMQ會在C:\Users\Administrator\AppData\Roaming\RabbitMQ 中產生一個設定檔,rabbitmq.config 裡面就是實際用到的配置資訊,如果圖方便,也可以這裡直接改。

[{rabbit, [{loopback_users, [guest]}]}].
RabbitMQ概念

producer:訊息生產者

    consumer:訊息消費者

     virtual host:虛擬機器主機,在RabbitMQ中,使用者只能在虛擬機器主機的層面上進行一些使用權限設定,比如我可以訪問哪些隊列,我可以處理哪些請求等等;

     broker:訊息轉寄者,也就是我們RabbitMQ服務端充當的功能了,那麼訊息是按照什麼規則進行轉寄的呢?需要用到下面幾個概念;

     exchange:交換器,他是和producer直接進行打交道的,有點類似於路由器的功能,主要就是進行轉寄操作的唄,那麼producer到底用哪個exchange進行路由呢?這個取決於routing key(路由鍵),每個訊息都有這個鍵,我們也可以自己設定,其實就是一字串;

     queue:訊息佇列,用於存放訊息,他接收exchange路由過來的訊息,我們可以對隊列內容進行持久化操作,那麼queue到底接收那個exchange路由的訊息呢?這個時候就要用到binding key(綁定鍵)了,綁定鍵會將隊列和exchange進行綁定,至於綁定方式,RabbitMQ提供了多種方式,大家可以看看鴻洋大神的RabbitMQ部落格系列(點擊查看);

     以上就是RabbitMQ涉及到的一些概念了,用一張圖表示這些概念之間的關係就是:

 

 

 RabbitMQ簡單使用

producer(生產者)端步驟:

    (1):建立ConnectionFactory,並且設定一些參數,比如hostname,portNumber等等

    (2):利用ConnectionFactory建立一個Connection串連

    (3):利用Connection建立一個Channel通道

    (4):建立queue並且和Channel進行綁定

    (5):建立訊息,並且發送到隊列中

     注意,在我們當前的例子中,並沒有用到exchange交換器,RabbitMQ預設情況下是會建立一個Null 字元串名字的exchange的,如果我們沒有建立自己的exchange的話,預設就是使用的這個exchange;

     producer端代碼(引用RabbitMQ.Client):

  //引用 RabbitMQ.Client、RabbitMQ.ServiceModel
  public class Sender { private final static String QUEUE_NAME = "MyQueue"; public static void main(String[] args) { send(); } public static void send() { ConnectionFactory factory = null; Connection connection = null; Channel channel = null; try { factory = new ConnectionFactory(); factory.setHost("localhost"); connection = factory.newConnection(); channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); String message = "my first message ....."; channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8")); System.out.println("已經發送訊息....."+message); } catch (IOException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); }finally{ try { //關閉資源 channel.close(); connection.close(); } catch (IOException e) { e.printStackTrace(); } catch (TimeoutException e) { e.printStackTrace(); } } }}

 consumer(消費者)端步驟:

     (1):建立ConnectionFactory,並且設定一些參數,比如hostname,portNumber等等

     (2):利用ConnectionFactory建立一個Connection串連

     (3):利用Connection建立一個Channel通道

     (4):將queue和Channel進行綁定,注意這裡的queue名字要和前面producer建立的queue一致

     (5):建立消費者Consumer來接收訊息,同時將消費者和queue進行綁定

     consumer端代碼:

        public class Receiver {    private final static String QUEUE_NAME = "MyQueue";        public static void main(String[] args) {        receive();    }        public static void receive()    {        ConnectionFactory factory = null;        Connection connection = null;        Channel channel = null;                try {            factory = new ConnectionFactory();            factory.setHost("localhost");            connection = factory.newConnection();            channel = connection.createChannel();            channel.queueDeclare(QUEUE_NAME, false, false, false, null);            Consumer consumer = new DefaultConsumer(channel){                @Override                public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties,                        byte[] body) throws IOException {                    System.out.println("11111111111");                    String message = new String(body, "UTF-8");                    System.out.println("收到訊息....."+message);                }};            channel.basicConsume(QUEUE_NAME, true,consumer);        } catch (IOException e) {            e.printStackTrace();        } catch (TimeoutException e) {            e.printStackTrace();        }finally{            try {                //關閉資源                channel.close();                connection.close();            } catch (IOException e) {                e.printStackTrace();            } catch (TimeoutException e) {                e.printStackTrace();            }        }    }}

 

RabbitMQ在Windows環境下的安裝與使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.