RabbitMQ、ActiveMQ和ZeroMQ都是極好的消息中間件,可是咱們在項目中該選擇哪一個更適合呢?不少開發者面臨這個煩惱。下面我會對這三個消息中間件作一個比較,看了後大家就心中有數了。
RabbitMQ 是AMQP協議領先的一個實現,它實現了代理(Broker)架構,意味着消息在發送到客戶端以前能夠在中央節點上排隊。此特性使得RabbitMQ易於 使用和部署,適宜於不少場景如路由、負載均衡或消息持久化等,用消息隊列只需幾行代碼便可搞定。可是,這使得它的可擴展性差,速度較慢,由於中央節點增長 了延遲,消息封裝後也比較大。
ZeroMQ 是一個很是輕量級的消息系統,專門爲高吞吐量/低延遲的場景開發,在金融界的應用中常常能夠發現它。與RabbitMQ相比,ZeroMQ支持許多高級消 息場景,可是你必須實現ZeroMQ框架中的各個塊(好比Socket或Device等)。ZeroMQ很是靈活,可是你必須學習它的80頁的手冊(若是 你要寫一個分佈式系統,必定要閱讀它)。
ActiveMQ居於二者之間,相似於ZemoMQ,它能夠部署於代理模式和P2P模式。相似於RabbitMQ,它易於實現高級場景,並且只需付出低消耗。它被譽爲消息中間件的「瑞士軍刀」。
要注意一點,ActiveMQ的下一代產品爲Apollo。
最終,這三個產品:
1. 都有客戶端API且支持多種編程語言;
2. 都有大量的文檔;
3. 都提供了積極的支持。編程