1. 程式人生 > >ActiveMQ與RabbitMQ之簡單對比介紹

ActiveMQ與RabbitMQ之簡單對比介紹

1. 簡單介紹

雙方都是鼎鼎有名的免費開源MQ專案,ActiveMq是Java,RabbitMQ是Erlang,理論上,RabbitMQ的效能比ActiveMq更強,是非Java系統的首選,ActiveMq是Java的,整套系統如果本來就是Java的,配合的默契更佳。雖然目前專案是java的,所以使用ActiveMq,但是出於參考學習的態度,把RabbitMq一起搭建學習了更好。

2. 下載地址

RabbitMQ http://www.rabbitmq.com/   1.7.0 (Server, Java ;Client, Erlang distribution)

3. 基本介紹
RabbitMQ:基於AMQP協議(

Advanced Message Queue Protocol)
ActiveMQ:基於STOMP協議

rabbitMQ 是 AMQP 用 Erlang 實現的 MQ 。之前不是很理解,為什麼要用 Erlang 來“又實現一箇中間件”呢?這麼做能發揮 Erlang 的優勢麼?機緣巧合,最近了解了一下 AMQP ,有了一點新的認識。

AMQP 主要是由金融領域的軟體專家們貢獻的創意,而聯合了通訊和軟體方面的力量,一起打造出來的規範。【Contributors: JPMorgan Chase Bank & Co., Cisco Systems, Inc., Credit Suisse, Envoy Technologies Inc., iMatix Corporation, IONA Technologies, Rabbit Technologies Ltd., Red Hat, Inc., TWIST Process Innovations Ltd, and 29West, Inc.】粗略的從概念上來講 AMQP 首先滿足的是金融系統的訊息通訊業務需求。

這是一個可以和 JMS 進行類比的訊息中介軟體開放規範,所不同的是 AMQP 同時定義了訊息中介軟體的語意層面和協議層面;另外一個不同是 AMQP 是語言中立的,而 JMS 僅和 Java 相關。AMQP 在“語意層面的定義”,這就意味著,它並不僅僅是象 JMS 或者其他的 MQ 一樣,僅能按照預定義的方式工作,而是“可程式設計”的訊息中介軟體而“語言中立”則意味著只要遵循 AMQP 的協議,任何一種語言都可以開發訊息元件乃至中介軟體本身。比如說這樣的場景:“Java 寫的訊息端(新的前端)通過 Erlang 寫的訊息中介軟體(基礎設施)與 C 寫的另外一個訊息端(遺留系統)進行訊息互動”。AMQP 是一個開放標準,目前還在 0.9 版本。尚未成熟,但市場上已經出現了很多這個標準的
實現產品
在 AMQP 所描繪的美好前景下,我們可以這麼設想將來構建在成熟之後構建在 AMQP 之上的金融系統。前端程式設計師用他們熟悉的“工業語言”來構建系統中新的應用模組。後端程式設計師則繼續用“老舊語言”在“遺產系統”上慢慢改進。當然,金融系統需要他們賴以溝通訊息互相呼叫的“基礎設施”必須堅若磐石。為業界提供“高併發,易擴容”的產品,這似乎正是 Erlang 的強項。之前聽說“ Erlang 進入金融系統”,具體的事例,大概就是這件事了。