咱們有興趣聽聽ActiveMQ與RabbitMQ和ZeroMQ的優缺點。 還歡迎有關任何其餘有趣的消息隊列的信息。 java
還有的RabbitMQ和ActiveMQ的之間的比較在這裏 。 開箱即用,ActiveMQ配置爲保證消息傳遞 - 與不太可靠的消息傳遞系統相比,這會給人留下緩慢的印象。 若是您願意,您能夠隨時更改性能配置,並得到至少與其餘任何郵件系統同樣的性能。 至少你有這個選擇。 有關論壇和ActiveMQ常見問題解答的大量信息,用於配置擴展,性能和高可用性。 此外,ActiveMQ將在規範最終肯定時支持AMQP 1.0,以及其餘有線格式,如STOMP。 apache
ActiveMQ的另外一個好處是它的Apache項目,所以開發人員社區存在多樣性 - 並且它與一家公司無關。 api
我只能加上關於ActiveMQ的2美分,但由於這是最流行的一個: 服務器
您想要寫的語言可能很重要。 儘管ActiveMQ確實擁有大多數客戶端,但與Java庫相比,它們的C#實現遠非完整。 框架
這意味着一些基本功能是片狀的(故障轉移協議......好吧......在某些狀況下失敗,沒有從新傳遞支持)而其餘根本就不存在。 因爲.NET彷佛對項目來講並非那麼重要,所以開發速度至關慢,而且彷佛沒有任何發佈計劃。 Trunk常常被破壞,因此若是你考慮到這一點,你可能想要考慮爲項目作出貢獻,若是你想要繼續前進的話。 分佈式
而後有ActiveMQ自己,它有不少很好的功能,但也有一些很是奇怪的問題。 出於穩定性緣由,咱們使用activemq的Fuse(Progress)版本,但即使如此,您仍須要記住幾個奇怪的「錯誤」: 性能
總而言之,若是你能解決它的問題,這是一個很是好的產品: 學習
A)使用.NET時不懼怕積極參與
B)在java中開發;-) spa
編輯:個人初步答案很是關注AMQP。 我決定重寫它以提供關於該主題的更普遍的觀點。 .net
這3種消息傳遞技術在構建分佈式系統時有不一樣的方法
RabbitMQ是AMQP協議的領先實現之一(以及Apache Qpid)。 所以,它實現了代理體系結構,這意味着消息在發送到客戶端以前在中心節點上排隊。 這種方法使RabbitMQ很是易於使用和部署,由於只需幾行代碼就能夠支持路由,負載平衡或持久消息隊列等高級方案。 可是,它也使其可擴展性下降,「慢」,由於中央節點增長了延遲而且消息包絡很是大。
ZeroMq是一個很是輕量級的消息系統,專爲高吞吐量/低延遲場景而設計,例如您能夠在金融領域找到的場景。 Zmq支持許多高級消息傳遞方案,但與RabbitMQ相反,您必須經過組合框架的各個部分(例如:套接字和設備)來本身實現大部分消息。 Zmq很是靈活,但你必須學習80頁左右的指南 (我推薦閱讀任何編寫分佈式系統的人,即便你不使用Zmq),而後才能作更復雜的事情而不是發送消息兩個同伴之間。
ActiveMQ處於中間地帶。 與Zmq同樣,它能夠與代理和P2P拓撲一塊兒部署。 與RabbitMQ同樣,實現高級方案更容易,但一般以原始性能爲代價。 這是消息傳遞的瑞士軍刀:-)。
最後,全部3個產品:
關於ZeroMQ又名0MQ,正如您可能已經知道的那樣,它是每秒鐘能夠得到最多消息的消息(上次我檢查時,它們的ref服務器上每秒大約有4百萬個消息),但正如您可能已經知道的那樣,文檔不存在。 您將很難找到如何啓動服務器,更不用說如何使用它們了。 我想這部分緣由尚未人爲0MQ作出貢獻。
玩得開心!
不多有應用程序具備與ActiveMQ同樣多的調整配置。 使ActiveMQ脫穎而出的一些功能包括:
可配置的預取大小。 可配置的線程。 可配置的故障轉移。 對生產者的可配置管理通知。 ......詳細信息: