天天看點

Windows環境下消息中間件RabbitMq的搭建與應用

前言

消息中間件目前已經在很多大型的項目上得到了運用,我們常見的有 RabbitMq, activitymq,kafka,rocketmq,其中rocketmq是阿裡自己在kafka的基礎上用java寫的一個消息中間件。在我們使用的支付寶等應用中都有大量的使用。

附幾種常見的mq對比圖如下:

Windows環境下消息中間件RabbitMq的搭建與應用

環境搭建

我們都知道大部分情況下都是在linux系統下部署服務。但是本篇的環境是在Windows下。

rabbitMQ是一個在AMQP協定标準基礎上完整的,可服用的企業消息系統。它遵循Mozilla Public License開源協定,采用 Erlang 實作的工業級的消息隊列(MQ)伺服器,Rabbit MQ 是建立在Erlang OTP平台上。是以在安裝rabbitMQ之前,需要先安裝Erlang 。

http://www.erlang.org/download/otp_win32_R16B03.exe,需要其他版本或者64位系統的,可以去官網下載下傳。

全部點選“下一步”就行。

有的選擇其他的安裝方式,可能需要添加一下系統環境變量

下載下傳運作 :http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.3/rabbitmq-server-3.2.3.exe   ,需要其他版本或者64位系統的,可以去官網下載下傳。

依舊可以不改變預設進行安裝。

需要注意:預設安裝的RabbitMQ 監聽端口是5672

使用RabbitMQ 管理插件,可以更好的可視化方式檢視Rabbit MQ 伺服器執行個體的狀态。

打開指令視窗:

輸入指令:

重新開機服務才行,使用指令:

這時候,也許會出現這種結果:

“發生錯誤:發生系統錯誤 5。  拒絕通路。”

問題解決方案:使用管理者打開cmd再執行此指令:

在C:\Windows\System32 找到cmd.exe 輕按兩下執行。

使用rabbitmqctl控制台指令(位于C:\Program Files\RabbitMQ Server\rabbitmq_server-xxx\sbin>)來建立使用者,密碼,綁定權限等。

注意:安裝路徑不同的請看仔細啊。

rabbitmq的使用者管理包括增加使用者,删除使用者,檢視使用者清單,修改使用者密碼。

新增一個使用者:

檢視已有使用者及使用者的角色:

此時來看下我們目前使用者後面沒有“[administrator]”

這個administrator是幹嘛用的呢?這就涉及到使用者角色問題了:

rabbitmq使用者角色可分為五類:超級管理者, 監控者, 政策制定者, 普通管理者以及其他。

(1) 超級管理者(administrator)

可登陸管理控制台(啟用management plugin的情況下),可檢視所有的資訊,并且可以對使用者,政策(policy)進行操作。

(2) 監控者(monitoring)

可登陸管理控制台(啟用management plugin的情況下),同時可以檢視rabbitmq節點的相關資訊(程序數,記憶體使用情況,磁盤使用情況等) 

(3) 政策制定者(policymaker)

可登陸管理控制台(啟用management plugin的情況下), 同時可以對policy進行管理。

(4) 普通管理者(management)

僅可登陸管理控制台(啟用management plugin的情況下),無法看到節點資訊,也無法對政策進行管理。

(5) 其他的

無法登陸管理控制台,通常就是普通的生産者和消費者

我們也給建立的使用者username 變成 “超級管理者” 角色:

rabbitmqctl.bat set_user_tags username administrator

修改密碼:

 rabbitmqctl change_password userName newPassword

删除已存在的使用者:

rabbitmqctl.bat delete_user username

這樣基本的配置就結束了。

然後我們打開浏覽器  http://localhost:15672 通路Rabbit Mq的管理控制台,使用剛才建立的賬号登陸系統:

Windows環境下消息中間件RabbitMq的搭建與應用

設定虛拟主機和使用者關系(預設虛拟主機名為 "/”),選中admin菜單,然後選中右邊的 virtual hosts 菜單,如下圖:

Windows環境下消息中間件RabbitMq的搭建與應用

 在最下面有一個添加虛拟主機,我們自己起好名稱點選 add virtual host 即可。

然後再上面的清單中就可以看到你新添加的主機,再點選你新添加的虛拟主機,為其配置設定使用者,我們首先可以配置設定我們前面建立的username 使用者,然後也可以在admin→users頁面添加新的使用者後,再将其添加到目前建立的虛拟主機。

對于這塊虛拟主機和使用者,我個人的了解就像是你買了一輛車(使用者),我買了一輛車(使用者), 但是我們都得去交管所上拍照(虛拟主機)。

 java代碼編寫

現在環境搭好,開始進行code。

建立一個maven工程,新手可參考 https://www.cnblogs.com/JJJ1990/p/8384386.html  前半部分。

在pom檔案中添加jar包引用

釋出者

我們先建立一個publisher()方法,在引入jar包的時候要特别注意,同樣的名稱有好幾個包,我們統一都隻引用 com.rabbitmq.client。

在queueDeclare方法中 除了隊列名稱外的其餘4項參數意義如下

* @param durable true if we are declaring a durable queue (the queue will survive a server restart)

* @param exclusive true if we are declaring an exclusive queue (restricted to this connection)

* @param autoDelete true if we are declaring an autodelete queue (server will delete it when no longer in use)

* @param arguments other properties (construction arguments) for the queue

消費者

  對比消費者和釋出者的代碼我們可以發現,我用了不同的使用者連接配接同一個虛拟主機 test_vhosts

建立main方法

運作代碼後可以看到如下結果:

Windows環境下消息中間件RabbitMq的搭建與應用

浏覽器打開rabbitmq界面。找到queues 菜單,點選後,就可以在清單中找到我們建立的隊列,找到我剛才建立的jqueue隊列,點進去後,找到下面的 publish message  目錄

在Payload 中我們随便輸入一些文字 點選釋出就可以看到代碼的控制台已經收到了這些消息

Windows環境下消息中間件RabbitMq的搭建與應用

控制台輸出:

Windows環境下消息中間件RabbitMq的搭建與應用

這說明程式運作後,消費者一直在監聽目前的隊列,一旦有消息,就會立刻擷取。

give me the ball!

繼續閱讀