首頁 >常見問題 >訊息隊列有哪些

訊息隊列有哪些

hzc
hzc原創
2020-06-29 11:30:5914734瀏覽

訊息佇列有:1、RabbitMQ,是一個在AMQP基礎上完成的,可重複使用的企業訊息系統,是目前最主流的訊息中間件之一;2、ActiveMQ,是完全支持JMS1.1和J2EE1.4規範的【JMS Provider】實作。

訊息隊列有哪些

1 RabbitMQ

RabbitMQ 2007年發布,是一個在AMQP(高階訊息佇列協定)基礎上完成的,可重複使用的企業訊息系統,是目前最主流的訊息中間件之一。

主要功能:

  • 可靠性: 提供了多種技術可以讓你在效能和可靠性之間進行權衡。這些技術包括持久性機制、投遞確認、發布者證實和高可用性機制;

  • 靈活的路由: 訊息在到達佇列前是透過交換器進行路由的。 RabbitMQ為典型的路由邏輯提供了多種內建交換器類型。如果你有更複雜的路由需求,可以將這些交換器組合起來使用,你甚至可以實現自己的交換器類型,並且當做RabbitMQ的插件來使用;

  • ##訊息集群:在相同區域網路中的多個RabbitMQ伺服器可以聚合在一起,作為一個獨立的邏輯代理來使用;

  • 隊列高可用:佇列可以在叢集中的機器上進行鏡像,以確保在硬體問題下也保證訊息安全;

  • 多種協定的支援:支援多種訊息佇列協定;伺服器端以Erlang語言編寫,支援只要是你能想到的所有程式語言;

  • 管理介面: RabbitMQ有一個易用的使用者介面,使得使用者可以監控和管理訊息Broker的許多面向;

  • 追蹤機制:如果訊息異常,RabbitMQ提供訊息追蹤機制,使用者可以找出發生了什麼;

  • 插件機制:提供了許多插件,來從多方面進行擴展,也可以寫自己的外掛;

2 ActiveMQ

ActiveMQ是由Apache出品,ActiveMQ 是完全支援JMS1.1和J2EE 1.4規範的JMS Provider實作。它非常快速,支援多種語言的客戶端和協議,而且可以非常容易的嵌入到企業的應用環境中,並有許多高級功能。

主要特性:

  • 服從JMS 規格:JMS 規格提供了良好的標準和保證,包括:同步或非同步的訊息分發,一次和僅一次的訊息分發,訊息接收和訂閱等等。遵從JMS 規範的好處在於,無論使用什麼JMS 實作提供者,這些基礎特性都是可用的;

  • 連結性:ActiveMQ 提供了廣泛的連結選項,支援的協定有:HTTP/S,IP 多播,SSL,STOMP,TCP,UDP,XMPP等。對眾多協定的支援讓 ActiveMQ 擁有了很好的靈活性。

  • 支援的協定種類多:OpenWire、STOMP、REST、XMPP、AMQP ;

  • 持久化外掛程式和安全性外掛程式:ActiveMQ 提供了多種持久化選擇。而且,ActiveMQ 的安全性也可以完全依據使用者需求進行自訂鑑權與授權;

  • 支援的客戶語言種類多:除了Java 之外,還有:C/ C ,.NET,Perl,PHP,Python,Ruby;

  • 代理叢集:多個ActiveMQ 代理程式可以組成一個叢集來提供服務;

  • #異常簡單的管理:ActiveMQ 是以開發者思維被設計出來的。所以,它並不需要專門的管理員,因為它提供了簡單又使用的管理特性。有許多中方法可以監控ActiveMQ 不同層面的數據,

  • 包括使用在JConsole 或ActiveMQ 的Web Console 中使用JMX,透過處理JMX 的告警訊息,透過使用命令列腳本,甚至可以透過監控各種類型的日誌。

3 RocketMQ

RocketMQ出自阿里公司的開源產品,用Java 語言實現,在設計時參考了Kafka,並做出了自己的一些改進,訊息可靠性上比Kafka 更好。 RocketMQ在阿里集團被廣泛應用在訂單,交易,充值,流計算,訊息推送,日誌流式處理,binglog分發等場景。

  • 是一個佇列模型的訊息中間件,具有高效能、高可靠、高實時、分散式特性;

  • Producer、Consumer 、隊列都可以分佈式;

  • Producer向一些隊列輪流發送訊息,隊列集合稱為Topic,Consumer如果做廣播消費,則一個consumer實例消費這個Topic對應的所有隊列,如果做叢集消費,

  • 則多個Consumer實例平均消費這個topic對應的佇列集合;

  • ##能夠保證嚴格的訊息順序;

  • 提供豐富的訊息拉取模式;

  • 高效率的訂閱者等級擴充能力;

  • #即時的訊息訂閱機制;

  • 億級訊息堆積能力;

  • 較少的依賴;

#4 Kafka

Apache Kafka是分散式訊息發布訂閱系統。它最初由LinkedIn公司基於獨特的設計實現為一個分散式的提交日誌系統( a distributed commit log),之後成為Apache專案的一部分。 Kafka系統快速、可擴展且可持久化。它的分區特性,可複製和可容錯都是其不錯的特性。

  • 快速持久化,可以在O(1)的系統開銷下進行訊息持久化;

  • 高吞吐,在一台普通的伺服器上既可達到10W/s的吞吐速率; 

  • .完整的分散式系統,Broker、Producer、Consumer都原生自動支援分散式,自動實現負載平衡;

  • 支援同步和非同步複製兩種HA;

  • #支援資料批次發送和拉取;

  • zero-copy:減少IO操作步驟;

  • 資料遷移、擴充對使用者透明;

  • 無需停機即可擴充機器;

  • 其他特性:嚴格的訊息順序、豐富的訊息拉取模型、高效訂閱者水平擴展、即時的訊息訂閱、億級的訊息堆積能力、定期刪除機制;

以上是訊息隊列有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn