Apache ActiveMQ 是遠程系統間進行通訊的消息代理,實現了 JMS(Java Message Service,Java 消息服務)。儘管 ActiveMQ 是使用 Java 寫的,可是其提供了衆多語言(包括 C/C++,.NET,Perl,PHP,Python,Ruby等)的 API。本書提供了商業應用裏配置,使用 ActiveMQ 須要的知識。
第一部分,咱們將簡單介紹 ActiveMQ 帶你入門。咱們討論跟面向消息的中間件和 JMS 相關的概念以便你能瞭解企業消息發展背景。咱們介紹了書中的例子,包括它們的使用場景以及如何運行這些例子。咱們將在全書中使用這些例子,因此學習每章時透徹理解這些例子是很是重要的。第一部分提供了學習本書剩餘章節的基礎知識。html
企業消息軟件早在 1980 年就存在了。它不只是應用之間進行交流的一種方式,也是集成的一種方式。可是,開源的解決方案在近十年快速增多。Apache ActiveMQ 就是這麼一種解決方案,它爲應用提供了一種異步地,鬆耦合地,通訊方式。這章將向你介紹 ActiveMQ。
ActiveMQ 是來自 Apache 軟件基金會聽從 Java Message Service(JMS)1.1 規範的面向消息的中間件,它提供了高可用性,高性能,可伸縮性以及安全的企業消息服務。ActiveMQ 使用了 Apache 許可,Apache 許但是自由的,商業友好的許可證書。也所以,任何人均可以使用和修改 ActiveMQ 並從新發布而不須要任何諮詢。這對於商業公司在基礎架構上無償使用 ActiveMQ 是很是重要的。正如第二章描述的那樣,一個面向消息的中間件充當了多個應用間事件交流的媒介,保證了它們能夠被準確地送達接收者那裏。所以,高可用性,高性能,和可伸縮性對一個消息中間件來講是很是重要的。
ActiveMQ 的目標提供跨越多種編程語言和平臺的標準的消息中間件。ActiveMQ 實現了 JMS 規範並額外提供了一打的特性。額外的特性咱們將在本書的其餘章節詳細介紹。
你學習ActiveMQ 的愛之初體驗對你從此可否成功地運用 ActiveMQ 是很是重要的。對於菜鳥來講,ActiveMQ 看起來多是很是複雜難學的,可是對於經驗豐富的老手來講,它是很是容易理解的。本章就是以一種輕鬆的方式帶你熟悉 ActiveMQ。你將不只學習 ActiveMQ 的特性,也能瞭解到在你的開發中爲何使用 ActiveMQ 以及什麼時候使用 ActiveMQ。編程
通過多年的努力改進,ActiveMQ 提供了不少豐富的特性。咱們將在本書討論的特性以下:安全
這裏只是對 ActiveMQ 特性的初體驗。正如上面所說,這些主題將在本書後面的章節逐步講解。爲了演示的目的,咱們提供了幾個例子,這些例子將在第 3 章開始引入。可是在提供這些例子以前,想必你定是想問爲何要使用 ActiveMQ?服務器
早在 2003 年,一羣開源社區的開發者走到一塊組建了 Apache Geronimo。之因此這麼作,是由於他們發現世界上居然沒有一個使用了 BSD 風格許可證的好用的消息代理。Geronimo 爲了兼容 Java EE,須要實現 JMS 規範。這些開發者們都擁有豐富的使用消息代理的經驗,有些人甚至之前本身寫過簡單的消息代理,很快他們開始討論寫一個開源的消息代理的可行性。而當時市場上的消息代理服務都是閉源且收費的,這更刺激了開發者們建立開源消息代理的決心。很快,使用 Apache 許可證的開源消息中間件 ActiveMQ 項目啓動了。
那麼,咱們爲何選擇使用 ActiveMQ 呢?網絡
鬆耦合架構通常是相對於基於 RPC(Remote Procedure Calls)的緊耦合架構來講的。這種鬆耦合架構一般來講是異步的,一個消息發起調用後並不關心其餘系統的動做,不一樣系統間沒有獨立性和實時性依賴。ActiveMQ 能夠爲應用提供消息分發到對端的保證。所以,消息生產者僅僅是生產和發送消息,並不關心消息怎麼被分發以及什麼時候被分發;消息消費者也是如此,它們不關心消息來自哪裏以及它們是怎麼被髮送到 ActiveMQ 的。這在異構環境下是很是重要的,客戶端可使用不一樣的語言甚至不一樣的協議來編寫。ActiveMQ 在異構環境中充當中間媒介,以異步的方式和不一樣系統進行交互。下一章咱們再詳細討論這些內容。
當咱們設計分佈式系統時,耦合性是必然要考慮到的一點。耦合是指兩個應用系統或多個應用系統之間的內部獨立性。耦合概念的一個簡單解釋是一個應用的改變是否影響其餘系統做出改變。一個應用變化是否會強制引發另一個應用變化呢?若是是,那麼這兩個應用就是緊耦合;不然,這兩個應用就是鬆耦合的。通常來講,緊耦合的系統比鬆耦合的系統更難維護,也就是說,鬆耦合系統更容易應對未來的變化。
第二章討論的中間件(包括 COM,CORBA,DCE 以及 EJB)均是使用 RPC 來進行遠程通訊的,都被認爲是緊耦合系統。使用 RPC 後,一個系統調用另一個系統,調用者將阻塞直到被調用者發回響應。
而在系統架構中加上消息中間件後,系統就成了鬆耦合的了。架構
何時使用 ActiveMQ 須要咱們仔細考慮。下面是一些使用了 ActiveMQ 的場景:異步
這裏做者扯了一大堆皮,無非就是使用 ActiveMQ 解耦系統,將系統異步化,好處多多之類的!編程語言
下載和安裝就沒必要說了,能夠直接去官網看文檔了!
運行自帶的例子的化,能夠去讀一下 ./docs/user-guide.html
,這個文檔淺顯易懂,比本身瞎折騰好多了!分佈式