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 原生)

CORE

OpenWire (5.x 原生)

OPENWIRE

AMQP

AMQP

MQTT

MQTT

STOMP

STOMP