RabbitMQ 是高階訊息佇列協議(AMQP)的開源訊息代理軟體。RabbitMQ 伺服器是用 Erlang 語言編寫的,訊息系統允許軟體、應用相互連線和擴充套件.這些應用可以相互連結起來組成一個更大的應用, 或者將使用者裝置和資料進行連線.訊息系統透過將訊息的傳送和接收分離來實現應用程式的異 步和解偶. 或許你正在考慮進行資料投遞,非阻塞操作或推送通知。或許你想要實現釋出/訂閱,非同步處理, 或者工作佇列。所有這些都可以透過訊息實現。 RabbitMQ 是一個訊息代理 - 一個訊息系統的媒介。它可以為你的應用提供一個通用的訊息發 送和接收平臺,並且保證訊息在傳輸過程中的安全。
功能亮點:
安裝到 Debian / Ubuntu
自 Debian since 6.0 (squeeze) 和 Ubuntu 9.04 之後,rabbitmq-server 就在 Ubuntu 的官方源裡面了,但是如果你想安裝最新版本,可以在官網下載,或者使用官方提供的源來安裝。本次實驗我們就用 Ubuntu 源裡的版本安裝,所有的依賴都可以被自動安裝。
當 RabbitMQ 安裝完畢的時候伺服器就會像後臺程式一般執行起來了。作為一個管理員,可以像平常一樣在 Debian 中使用以下命令啟動和關閉服務
伺服器相關命令:
首先啟動伺服器:
然後檢視狀態:
控制系統限制
如果要調整系統限制(尤其是開啟檔案的控制代碼的數量)的話,可以透過編輯 檔案讓服務啟動的時候呼叫ulimit,例如:
日誌
伺服器的輸出被髮送到 RABBITMQ_LOG_BASE 目錄的 RABBITMQ_NODENAME.log 檔案中。一些額外的資訊會被寫入到 RABBITMQ_NODENAME-sasl.log 檔案中。
代理總是會把新的資訊新增到日誌檔案尾部,所以完整的日誌歷史可以被儲存下來。
你可以使用 logrotate 程式來執行必要的迴圈和壓縮工作,並且你還可以更改它。預設情況下,這個位於 /var/log/rabbitmq 檔案中的指令碼會每週執行一次。你可以檢視 /etc/logrotate.d/rabbitmq-server 來對 logrotate 進行配置。
支援的平臺及語言
abbitMQ有著執行在所有 Erlang 所支援的平臺之上的潛力,從嵌入式系統到多核心叢集還有基於雲端的伺服器。
RabbitMQ 是高階訊息佇列協議(AMQP)的開源訊息代理軟體。RabbitMQ 伺服器是用 Erlang 語言編寫的,訊息系統允許軟體、應用相互連線和擴充套件.這些應用可以相互連結起來組成一個更大的應用, 或者將使用者裝置和資料進行連線.訊息系統透過將訊息的傳送和接收分離來實現應用程式的異 步和解偶. 或許你正在考慮進行資料投遞,非阻塞操作或推送通知。或許你想要實現釋出/訂閱,非同步處理, 或者工作佇列。所有這些都可以透過訊息實現。 RabbitMQ 是一個訊息代理 - 一個訊息系統的媒介。它可以為你的應用提供一個通用的訊息發 送和接收平臺,並且保證訊息在傳輸過程中的安全。
功能亮點:
可靠性:RabbitMQ 提供了各種功能,讓你權衡效能與可靠性,其中包括永續性,交付確認和高可用性。靈活的路由:訊息在到達佇列之前,透過交換機的路由。RabbitMQ 為典型的路由邏輯提供了幾個內建的交換機型別。對於更復雜的路由,則可以繫結幾種交換機一起使用甚至可以自己實現交換機型別,並且把它作為一個外掛的來使用。叢集:在本地網路上的幾個 RabbitMQ 伺服器可以聚集在一起,作為一個獨立的邏輯代理來使用。聯合:對於伺服器來說,它比叢集需要更多的鬆散和非可靠連結。為此 RabbitMQ 提供了聯合模型。高度可用佇列:在群集中,佇列可以被映象到幾個機器中,確保您的訊息即使在出現硬體故障的安全。多協議:RabbitMQ 支援上各種訊息傳遞協議的訊息傳送.許多客戶端:有你能想到的幾乎任何語言 RabbitMQ 客戶端。管理使用者介面:RabbitMQ 附帶一個簡單使用管理使用者介面,允許您監視和控制您的訊息代理的各個方面。追蹤:如果您的訊息系統行為異常,RabbitMQ 提供跟蹤支援,讓你找出問題是什麼。外掛系統:RabbitMQ 附帶各種外掛擴充套件,並且你也可以寫你自己外掛.商業支援:提供商業支援、 培訓和諮詢。大型社群:有一個龐大的社群 RabbitMQ,有各種各樣的客戶端、 外掛、 指南等。安裝到 Debian / Ubuntu
自 Debian since 6.0 (squeeze) 和 Ubuntu 9.04 之後,rabbitmq-server 就在 Ubuntu 的官方源裡面了,但是如果你想安裝最新版本,可以在官網下載,或者使用官方提供的源來安裝。本次實驗我們就用 Ubuntu 源裡的版本安裝,所有的依賴都可以被自動安裝。
當 RabbitMQ 安裝完畢的時候伺服器就會像後臺程式一般執行起來了。作為一個管理員,可以像平常一樣在 Debian 中使用以下命令啟動和關閉服務
伺服器相關命令:
首先啟動伺服器:
然後檢視狀態:
控制系統限制
如果要調整系統限制(尤其是開啟檔案的控制代碼的數量)的話,可以透過編輯 檔案讓服務啟動的時候呼叫ulimit,例如:
控制代碼:在程式設計中,控制代碼(handle)是一種特殊的智慧指標。當一個應用程式要引用其他系統(如資料庫、作業系統)所管理的記憶體塊或物件時,就要使用控制代碼。控制代碼與普通指標的區別在於,指標包含的是引用物件的記憶體地址,而控制代碼則是由系統所管理的引用標識,該標識可以被系統重新定位到一個記憶體地址上。這種間接訪問物件的模式增強了系統對引用物件的控制。(參見封裝)。通俗的說就是我們呼叫控制代碼就是呼叫控制代碼所提供的服務,即控制代碼已經把它能做的操作都設定好了,我們只能在控制代碼所提供的操作範圍內進行操作,但是普通指標的操作卻多種多樣,不受限制。日誌
伺服器的輸出被髮送到 RABBITMQ_LOG_BASE 目錄的 RABBITMQ_NODENAME.log 檔案中。一些額外的資訊會被寫入到 RABBITMQ_NODENAME-sasl.log 檔案中。
代理總是會把新的資訊新增到日誌檔案尾部,所以完整的日誌歷史可以被儲存下來。
你可以使用 logrotate 程式來執行必要的迴圈和壓縮工作,並且你還可以更改它。預設情況下,這個位於 /var/log/rabbitmq 檔案中的指令碼會每週執行一次。你可以檢視 /etc/logrotate.d/rabbitmq-server 來對 logrotate 進行配置。
支援的平臺及語言
abbitMQ有著執行在所有 Erlang 所支援的平臺之上的潛力,從嵌入式系統到多核心叢集還有基於雲端的伺服器。
以下的平臺是 Erlang 語言所支援的,因此RabbitMQ可以執行其上:SolarisBSDLinuxMacOSXTRU64Windows NT/2000/XP/Vista/Windows 7/Windows 8Windows Server 2003/2008/2012Windows 95, 98VxWorksRabbitMQ 的開源版本通常被部署在以下的平臺上:Ubuntu 和其他基於 Debian 的 Linux 發行版Fedora 和其他基於 RPM 包管理方式的 Linux 發行版openSUSE 和衍生的發行版(包括 SLES 和 SLERT)Mac OS XWindows XP 和 後續版本RabbitMQ 支援下列程式語言:C# (using .net/c# client)clojure (using Langohr)erlang (using erlang client)java (using java client)javascript/node.js (using amqp.node)perl (using Net::RabbitFoot)python (using pika)python-puka (using puka)ruby (using Bunny)ruby (using amqp gem)