1. 程式人生 > >JMS與activemq--4.MQ型別對比/MQ技術選型(資料來源網路)

JMS與activemq--4.MQ型別對比/MQ技術選型(資料來源網路)

(圖片來源於網路)

擴充套件:

  • ZeroMQ : 擴充套件性好,開發比較靈活,採用C語言實現,實際上他只是一個socket庫的重新封裝,如果我們做為訊息佇列使用,需要開發大量的程式碼
  • RabbitMQ :結合erlang語言本身的併發優勢,效能較好,但是不利於做二次開發和維護
  •  ActiveMQ: 歷史悠久的開源專案,已經在很多產品中得到應用,實現了JMS1.1規範,可以和spring-jms輕鬆融合,實現了多種協議,不夠輕巧(原始碼比RocketMQ多).,支援持久化到資料庫,對佇列數較多的情況支援不好,不過我們的專案中並不會建很多的佇列.
  • Redis 做為一個基於記憶體的K-V資料庫,其提供了訊息訂閱的服務,可以當作MQ來使用,目前應用案例較少,且不方便擴充套件
  • RocketMQ: 阿里巴巴的MQ中介軟體,在其多個產品下使用,並能夠撐住雙十一的大流量,他並沒有實現JMS規範,使用起來很簡單。部署由一個 命名服務(nameserver)和一個代理(broker)組成,nameserver和broker以及producer都支援叢集,佇列的容量受機器硬碟的限制,佇列滿後可以支援持久化到硬碟(也可以自己適配程式碼,將其持久化到NOSQL資料庫中),佇列滿後會影響吞吐量,可以採用主備來保證穩定性,支援回溯消費,可以在broker端進行訊息過濾.
     
技術選型確定因素:
  1. 技術成熟,流行程度高, 案例多,坑少
  2. 可面向Java二次開發,工具異常及時修改
  3. 開發成本低 ,最好和spring搭配使用
  4. 安全穩定,支援資料持久化
  5. 本專案不需要高併發,分散式,叢集,大資料量