1. 程式人生 > >Windows下RabbitMQ安裝及注意事項

Windows下RabbitMQ安裝及注意事項

Windows下RabbitMQ安裝及注意事項

簡介

背景

1.      RabbitMQ是一個由erlang開發的AMQP(Advanved Message Queue)的開源實現。

RabbitMQ是實現AMQP(高階訊息佇列協議)的訊息中介軟體的一種,最初起源於金融系統,用於在分散式系統中儲存轉發訊息,在易用性、擴充套件性、高可用性等方面表現不俗。RabbitMQ主要是為了實現系統之間的雙向解耦而實現的。當生產者大量產生資料時,消費者無法快速消費,那麼需要一箇中間層。儲存這個資料。

2.     RabbitMQ 即一個訊息佇列,主要是用來實現應用程式的非同步和解耦,同時也能起到訊息緩衝,訊息分發的作用。(訊息中介軟體最主要的作用是解耦,中介軟體最標準的用法是生產者生產訊息傳送到佇列,消費者從佇列中拿取訊息並處理,生產者不用關心是誰來消費,消費者不用關心誰在生產訊息,從而達到解耦的目的。在分散式的系統中,訊息佇列也會被用在很多其它的方面,比如:分散式事務的支援,RPC的呼叫等等。)

 

擴充套件:AMQP,即Advanced Message Queuing Protocol,高階訊息佇列協議,是應用層協議的一個開放標準,為面向訊息的中介軟體設計。訊息中介軟體主要用於元件之間的解耦,訊息的傳送者無需知道訊息使用者的存在,反之亦然。AMQP的主要特徵是面向訊息、佇列、路由(包括點對點和釋出/訂閱)、可靠性、安全

場景

1、跨系統的非同步通訊,所有需要非同步互動的地方都可以使用訊息佇列。就像我們除了打電話(同步)以外,還需要發簡訊,發電子郵件(非同步)的通訊方式。

 

  2、多個應用之間的耦合,由於訊息是平臺無關和語言無關的,而且語義上也不再是函式呼叫,因此更適合作為多個應用之間的鬆耦合的介面。基於訊息佇列的耦合,不需要傳送方和接收方同時線上。在企業應用整合(EAI)中,檔案傳輸,共享資料庫,訊息佇列,遠端過程呼叫都可以作為整合的方法。

 

  3、應用內的同步變非同步,比如訂單處理,就可以由前端應用將訂單資訊放到佇列,後端應用從佇列裡依次獲得訊息處理,高峰時的大量訂單可以積壓在佇列裡慢慢處理掉。由於同步通常意味著阻塞,而大量執行緒的阻塞會降低計算機的效能。

 

  4、訊息驅動的架構(EDA),系統分解為訊息佇列,和訊息製造者和訊息消費者,一個處理流程可以根據需要拆成多個階段(Stage),階段之間用佇列連線起來,前一個階段處理的結果放入佇列,後一個階段從佇列中獲取訊息繼續處理。

 

  5、應用需要更靈活的耦合方式,如釋出訂閱,比如可以指定路由規則。

 

  6、跨區域網,甚至跨城市的通訊(CDN行業),比如北京機房與廣州機房的應用程式的通訊。

準備工作

otp_win64_20.3.exe

rabbitmq-server-3.7.4.exe

安裝過程

介紹了RabbitMQ背景和使用場景,那我們來實現一下:

首先 我們去官網下載一個rabbitmq,我用的是windows系統,以windows系統按住為例:

1.     開啟http://www.rabbitmq.com/ 官網,進入Docs頁面進入下載頁面

2.     In This Section 這一塊內容我們可以看到Install: Windows  我們點選進去可以看到有這樣一句話

   

首先,您需要安裝支援的 Windows 版Erlang。下載並執行Erlang for Windows 安裝程式。強烈建議使用64位版本。重要說明:您必須使用管理帳戶執行Erlang安裝程式,否則RabbitMQ安裝程式預期的登錄檔項將不存在。

然後,執行RabbitMQ安裝程式rabbitmq-server-3.7.4.exe。它將RabbitMQ安裝為Windows服務並使用預設配置啟動它。

3.     所以我們在安裝rabbitmq需要安裝一個Erlang 官網地址:http://www.erlang.org/downloads

4.     安裝otp_win64_20.3.exe 雙擊.exe檔案進行安裝就好,直接下一步完成就好。

5.     然後安裝rabbitmq-server-3.7.4.exe雙擊.exe檔案進行安裝就好,直接下一步完成就好。

6.     輸入:rabbitmq-plugins enablerabbitmq_management命令,出現plugins安裝成功的提示。

7.     安裝完成後  開啟http://localhost:15672 可以看到

輸入賬號/密碼:guest/ guest後進入

注意事項

當然,上面的安裝過程是一個理想中的狀態,我在安裝過程中沒有那麼順利,遇到各種錯啊,心態差點崩掉!!!

問題一:

先上圖

我們可以看到遇到這個錯誤 (ArgumentError)argument error (stdlib) io_lib.erl:170: :io_lib.format(' * effective user\'shome directory: ~s~n'  試了好多遍,找了好多資料,重灌了一遍,還是不行  最後發現了這一篇文章:https://stackoverflow.com/questions/49376049/rabbitmq-argumenterror-argument-error

有這樣一句話 Actually,my computer's username used to be chinese and now Ichange it to english,it also doesn't work.Now I think my path hasn't non-ASCIIcharactor.

大致意思是說:實際上,我的計算機的使用者名稱曾經是中文,現在我將其更改為英文,但它也不起作用。現在我認為我的路徑沒有非ASCII字元。

這個我在想是不是也是因為我檔案路徑是中文的緣故,讀取不到地址,所以我就把計算機的名字改掉了,改成了英文字元。(改的過程也不是那麼順利,看著網上一步一步走,結果,使用者密碼改的不對了,試了好多遍,哎沒辦法,我重灌系統了重灌系統了啊!!!)

系統重新裝好之後有安裝了一遍這個時候又出現了問題。

問題二:

安裝好之後,訪問網址http://localhost:15672訪問不通。

最後解決方案:首先在命令列輸入:rabbitmq-servicestop,接著輸入rabbitmq-service remove,再接著輸入rabbitmq-serviceinstall,接著輸入rabbitmq-service start,最後重新輸入rabbitmq-plugins enable rabbitmq_management試試

完美,執行成功!

 

rabbitMQ 常用命令

簡單的列一下常用命令,方便以後用:

 

啟動監控管理器:rabbitmq-plugins enable rabbitmq_management

關閉監控管理器:rabbitmq-plugins disable rabbitmq_management

啟動rabbitmq:rabbitmq-service start

關閉rabbitmq:rabbitmq-service stop

檢視所有的佇列:rabbitmqctl list_queues

清除所有的佇列:rabbitmqctl reset

關閉應用:rabbitmqctl stop_app

啟動應用:rabbitmqctl start_app

使用者和許可權設定(後面用處)

新增使用者:rabbitmqctl add_user username password

分配角色:rabbitmqctl set_user_tags username administrator