1. 程式人生 > >java架構之路-(MQ專題)RabbitMQ安裝和基本使用

java架構之路-(MQ專題)RabbitMQ安裝和基本使用

RabbitMQ安裝

  我這裡安裝是使用阿里雲的CentOS7.5來安裝的,使用CentOS版本低於7的可能會報錯。

1.安裝rabbitmq所需要的依賴包

輸入$ yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc- c++ kernel-devel m4 ncurses-devel tk tc xz

 2.下載安裝包 

$ wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm

$ wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm

$ wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm

 

 3.安裝服務命令 

#第一步:安裝erlang語言環境

$ rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm

#第二步:安裝socat加解密軟體

$ rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm

#第三步:最後安裝rabbitmq

$ rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

   

4.修改配置檔案

#第一步:查詢rabbit.app,並編輯改檔案

 修改:loopback_users 中的 <<"guest">>,只保留guest(不修改只能通過localhost訪問) 

 #第二步,修改rabbitmq-env.conf檔案

$ vim /etc/rabbitmq/rabbitmq-env.conf 

新增NODENAME=rabbit 

5.安裝外掛,保證瀏覽器可以訪問

$ rabbitmq-plugins enable rabbitmq_management 

6.啟動服務

$ rabbitmq-server start &

$ rabbitmqctl start_app

 開啟瀏覽器,輸入我們的地址加埠15672,就可以看到我們的頁面了,賬號密碼都是guest,登入進來是這樣的。

 

  說了這麼多,還沒說這個玩意是做什麼的呢~!我第一次接觸這個我也懵,完全不懂得是做什麼的,我們先來看一下他能做什麼吧。

  RabbitMQ(暫不說實際場景,後面說場景,現在說場景怕自己給自己說懵圈了)主要是傳遞訊息,就是什麼意思呢,看個圖。

  簡單來說就是這樣的,通過我們的RabbitMQ將我們的資料傳送到其它的伺服器上去,讓伺服器得到我們的訊息,有人會問為什麼不直接傳遞,也可以直接傳遞,但是伺服器達到一定數量,你是維護起來成本很高的,而且還需要可靠性的投遞呢?程式碼實現起來是複雜的。

  我們再來開啟黑色的盒子看一下里面的東西。

我們來說幾個名詞,有圖了更容易理解和記憶

1:server :又稱為broker,接受客戶端連線,實現amqp實體服務

2:exchange 交換機: 訊息直接投遞到交換機上,然後交換機根據訊息的路由key 來路由到對應繫結的佇列上

3:baingding: 繫結 exchange 與queue的虛擬連線,bingding中可以包含route_key

4:route_key 路由key ,他的作用是在交換機上通過route_key來把訊息路由到哪個佇列上

5:queue:佇列,用於來儲存訊息的載體,有消費者監聽,然後消費訊息 

  就是我們的資料服務A通過網路通道,到達exchange交換機,通過路由route_key來把訊息傳送到哪個佇列上,提供給我們的下游服務使用,左面的叫上游服務,右面的叫下游服務。

交換機exchange

  這裡還得繼續說點枯燥的理論,交換機分為三種,直接交換機,扇形交換機和我們的Topic交換機,也叫做話題交換機。來舉三個栗子。

直接交換機:

就是說,攜帶我們的routing Key通過我們的路由匹配到我們的routing Key就能到達我們的的Queue佇列下,接收到我們傳送過來的訊息。

扇形交換機

   通過我們的交換機,只要訂閱了我們的交換機Exchange,就可以收到我們的訊息。

Topic交換機

  需要匹配我們的routing Key,這裡的匹配模式有兩種,*和#,*表示值匹配一層,一層就是..之間就叫做一層,比如啊,top.xiaocai.java,這時我們匹配top.xiaocai.*即可匹配到,而我們匹配top.*則不可匹配。再就是我們的#是全匹配,還是top.xiaocai.java的例子,這時我們匹配top.xiaocai.#即可匹配到,而我們匹配top.#也可匹配到。我們來看一個圖

 就是一個匹配的規則,其實不難的。

 命令列

   我們再來看幾個命令列的使用

檢視使用者列表rabbitmqctl list_users,即可得到我們的使用者列表了,前面是使用者名稱,括號內的是使用者對應的角色。

 輸入rabbitmqctl add_user xiaocaijava 123456,新增我們的新使用者,前面xiaocaijava是使用者名稱,123456是密碼。

 設定rabbitmq使用者的角色 rabbitmqctl set_user_tags xiaocaijava administrator 

 

 輸入rabbitmqctl delete_user xiaocaijava,即可刪除我們的使用者,注意別把guest使用者刪了,不然會很麻煩。

 後面的我就大概說一下,不是很重要,會用即可。

為使用者設定許可權: rabbitmqctl set_permissions -p <虛擬機器> <使用者名稱> ".*" ".*" ".*" 

列出使用者許可權: rabbitmqctl list_user_permissions xiaocai

清除使用者許可權 rabbitmqctl clear_permissions -p <虛擬機器> <使用者名稱> 

修改使用者密碼 rabbitmqctl change_password 使用者名稱 新密碼 

虛擬主機操作

rabbitmqctl add_vhost /cloudmall 增加一個虛擬主機

rabbitmqctl list_vhosts; 檢視所有的虛擬主機

rabbitmqctl list_permissions -p /cloudmall檢視虛擬主機的許可權

rabbitmqctl delete_vhost /cloudmall 刪除虛擬主機 

操作佇列命令

rabbitmqctl list_queues 查詢所有佇列

rabbitmqctl -p vhostpath purge_queue blue 清除佇列訊息 

  今天只是簡單瞭解一下我們的RabbitMQ,後面會詳細的去說RabbitMQ的作用和java相關的使用。

 

最進弄了一個公眾號,小菜技術,歡迎大家的加入

&nbs