Apache ActiveMQ Artemis 擁有強大且彈性的核心,為其他協定的實作提供了基礎。每個協定實作都會將其特定協定的概念轉換到這個核心上。
此 Broker 隨附一個直接與此核心互動的客戶端實作。它使用所謂的 "core" API,並使用「核心」協定透過網路進行通訊。
1. 支援的協定
此 Broker 採用可插拔的協定架構。協定外掛程式以協定模組的形式存在。每個協定模組都包含在 Broker 的類別路徑中,並在啟動時由 Broker 載入。此 Broker 預設隨附 5 個協定模組。
1.1. AMQP
AMQP 是一種用於互通訊息傳遞的規範。它還定義了連線格式,因此任何 AMQP 用戶端都可以與任何支援 AMQP 的訊息傳遞系統搭配使用。AMQP 用戶端有多種不同的程式設計語言版本。
Apache ActiveMQ Artemis 實作 AMQP 1.0 規範。任何支援 1.0 規範的用戶端都能夠與 Apache ActiveMQ Artemis 互動。
請參閱 AMQP 以取得更多詳細資訊。
1.2. MQTT
MQTT 是一種輕量級的連線協定。它旨在裝置和網路受限的環境中執行。任何支援 3.1、3.1.1 或 5 規範的用戶端都能夠與 Apache ActiveMQ Artemis 互動。
請參閱 MQTT 以取得更多詳細資訊。
1.3. STOMP
Stomp 是一種非常簡單的文字協定,用於與訊息傳遞系統互通。它定義了連線格式,因此理論上任何 Stomp 用戶端都可以與任何支援 Stomp 的訊息傳遞系統搭配使用。Stomp 用戶端有多種不同的程式設計語言版本。任何支援 1.0、1.1 或 1.2 規範的用戶端都能夠與 Apache ActiveMQ Artemis 互動。
請參閱 Stomp 以取得更多詳細資訊。
1.4. OpenWire
ActiveMQ Classic 定義了自己的連線協定:OpenWire。為了支援 ActiveMQ 「Classic」用戶端,Apache ActiveMQ Artemis 支援 OpenWire。任何 ActiveMQ 5.12.x 或更高版本都可以與 Apache ActiveMQ Artemis 搭配使用。
請參閱 OpenWire 以取得更多詳細資訊。
1.5. Core
ActiveMQ Classic 定義了自己的連線協定:OpenWire。為了支援 ActiveMQ 「Classic」用戶端,Apache ActiveMQ Artemis 支援 OpenWire。任何 ActiveMQ 5.12.x 或更高版本都可以與 Apache ActiveMQ Artemis 搭配使用。
請參閱 Core 以取得更多詳細資訊。
1.5.1. API 和其他介面
雖然 JMS 和 Jakarta Messaging 是標準化的 API,但它們並未定義網路協定。ActiveMQ Artemis JMS 和 Jakarta Messaging 用戶端是在核心協定的基礎上實作的。我們還提供一個用戶端 JNDI 實作。
2. 設定接收器
為了使用特定的協定,必須設定傳輸,並啟用所需的協定。關於設定傳輸的完整章節可在此處找到:這裡。
ActiveMQ Artemis 發行版隨附的預設組態已定義了許多接收器,每個協定各一個,外加一個支援所有協定的通用接收器。若要在特定的接收器上啟用協定,只需將 protocols
URL 參數新增至接收器 URL,其中值為一個或多個協定 (以逗號分隔)。如果從 URL 中省略 protocols
參數,則會啟用所有協定。
-
以下範例僅在連接埠 1883 上啟用 MQTT
<acceptors> <acceptor>tcp://127.0.0.1:1883?protocols=MQTT</acceptor> </acceptors>
-
以下範例在連接埠 5672 上啟用 MQTT 和 AMQP
<acceptors> <acceptor>tcp://127.0.0.1:5672?protocols=MQTT,AMQP</acceptor> </acceptors>
-
以下範例在
61616
上啟用所有協定<acceptors> <acceptor>tcp://127.0.0.1:61616</acceptor> </acceptors>
以下是支援的協定及其在 protocols
URL 參數中使用的對應值。
協定 | protocols 值 |
---|---|
Core (Artemis 和 HornetQ 原生) |
|
OpenWire (5.x 原生) |
|
AMQP |
|
MQTT |
|
STOMP |
|