設定傳輸

使用 ActiveMQ Classic > 設定傳輸

傳輸設定選項

您可能首先使用的 URI 類型之一是傳輸 URI,它使用某種傳輸方式連線到代理程式。 通常,TCP 或 VM 是您首先會使用的傳輸方式。

注意空白字元

以下所有 URI 設定都是基於 java.net.URI 類別,該類別不允許使用空白字元。 因此,如果您使用 failover:static: URI,請勿在 ',' 符號周圍放置任何空白字元。

AUTO 傳輸

從 5.13.0 開始,ActiveMQ Classic 支援在 TCP、SSL、NIO 和 NIO SSL 上自動偵測線路協定。 支援 OpenWire、STOMP、AMQP 和 MQTT。 有關詳細資訊,請參閱 AUTO 傳輸參考。

VM 傳輸

VM 傳輸允許用戶端在 VM 內部相互連線,而無需網路通訊的額外負荷。 使用的連線不是 Socket 連線,而是使用直接方法調用來啟用高效能的嵌入式訊息傳遞系統。

第一個使用 VM 連線的用戶端將啟動嵌入式代理程式。 後續連線將附加到同一代理程式。 一旦所有與代理程式的 VM 連線都已關閉,嵌入式代理程式將自動關閉。

如需詳細資訊,請參閱 VM 傳輸參考

AMQP 傳輸

從 5.8.0 開始,ActiveMQ Classic 支援 AMQP。 如需詳細資訊,請參閱 AMQP 傳輸參考。

MQTT 傳輸

從 5.6.0 開始,ActiveMQ Classic 也支援 MQTT。 這是一種輕量級的發佈/訂閱訊息傳輸方式。 如需詳細資訊,請參閱 MQTT 傳輸參考。

TCP 傳輸

TCP 傳輸允許用戶端使用 TCP Socket 連線到遠端的 ActiveMQ Classic。

如需詳細資訊,請參閱 TCP 傳輸參考

NIO 傳輸

與 TCP 傳輸相同,差別在於使用了 新 I/O (NIO) 套件,這可能會提供更好的效能。 Java NIO 套件不應與 IBM 的 AIO4J 套件混淆。

若要從 TCP 切換到 NIO,只需變更 URI 的配置部分即可。 以下是在代理程式 XML 設定檔中定義的範例。

<broker>
  ...
  <transportConnectors>
    <transportConnector name="nio" uri="nio://0.0.0.0:61616"/>  
  </<transportConnectors>
  ...
</broker>

嘗試在用戶端使用 nio 傳輸 URL 會實例化常規 TCP 傳輸。 如需詳細資訊,請參閱 NIO 傳輸參考

SSL 傳輸

這允許您使用 SSL 通過 TCP 進行通訊。 如需詳細資訊,請參閱 SSL 傳輸參考

NIO SSL 傳輸

可用性

自 5.6 版本起可用

通過 NIO 實作 SSL 傳輸。 這允許您將大量 SSL 用戶端連線到單一代理程式實例。 這僅限於伺服器端的傳輸選項

<broker>
  ...
  <transportConnectors>
    <transportConnector name="nio+ssl" uri="nio+ssl://0.0.0.0:61616"/>  
  </<transportConnectors>
  ...
</broker>

嘗試在用戶端使用 nio+ssl 傳輸 URL 會實例化常規 SSL 傳輸。

Peer 傳輸

Peer 傳輸使用 ActiveMQ Classic 提供對等網路。 實際上發生的情況是,Peer 傳輸使用 VM 傳輸來建立並連線到本機嵌入式代理程式,但該代理程式會設定為建立與其他對等嵌入式代理程式的網路連線。

如需詳細資訊,請參閱 Peer 傳輸參考

UDP 傳輸

這允許您使用 UDP 進行通訊。

如需詳細資訊,請參閱 UDP 傳輸參考

多點傳送傳輸

這允許您使用多點傳送進行通訊。

如需詳細資訊,請參閱 多點傳送傳輸參考

HTTP 和 HTTPS 傳輸

這允許 ActiveMQ Classic 用戶端和代理程式通過 HTTP 進行通道傳輸。 如果用戶端不是 JMS,您可能需要改為查看 RESTAjax 支援。

如需詳細資訊,請參閱 HTTP 和 HTTPs 傳輸參考

WebSockets 傳輸

此傳輸使用新的 HTML5 WebSockets 與代理程式交換訊息。 如需詳細資訊,請參閱 WebSockets 傳輸參考

Stomp 傳輸

這是一個可以使用多種語言的純文字傳輸。 有關更多詳細資訊,請參閱 Stomp

通用 URI

您可以透過 URI 語法設定其他功能,如下所示…

連線設定 URI

任何 Apache ActiveMQ Classic JMS 連線都可以使用 URL 進行設定,或者明確設定 ActiveMQConnectionActiveMQConnectionFactory 物件上的屬性。

如需詳細資訊,請參閱 連線設定 URI

目的地選項

您可以使用 目的地選項設定各種與消費者相關的選項,這允許您使用 URI 語法設定目的地。

代理程式設定 URI

您可以使用 代理程式設定 URI 來設定嵌入式代理程式,可以使用 Java 的 BrokerFactory 輔助類別,或使用 activemq Shell 指令碼。 有關更多詳細資訊,請參閱 如何執行代理程式

設定線路格式

任何涉及將訊息編組到某種網路傳輸(例如 TCP 或 UDP)的傳輸通常都會使用 OpenWire 格式。 這是可設定的,用於自訂事物在線路上的顯示方式。

如需詳細資訊,請參閱 設定線路格式

高階協定 URI

可以使用 URI 設定以下較高階的協定

容錯移轉傳輸

容錯移轉傳輸會在任何其他傳輸之上新增重新連線邏輯。 這就是 ActiveMQ Classic 3 中曾經使用的可靠傳輸。 它的設定語法允許您指定任意數量的複合 URI。 容錯移轉傳輸會隨機選擇其中一個複合 URI,並嘗試建立與之的連線。 如果連線不成功或隨後失敗,則會與清單中的其他 URI 之一建立新連線。

如需詳細資訊,請參閱 容錯移轉傳輸參考

扇出傳輸

扇出傳輸會在任何其他傳輸之上新增重新連線和複寫邏輯。 它用於將指令複寫到多個代理程式。

如需詳細資訊,請參閱 扇出傳輸參考

使用探索

通常,當使用 TCP 之類的傳輸時,您會想要使用 探索來尋找可用的代理程式。 這與使用(例如)多點傳送不同 - 因為實際的主要通訊是透過 TCP 進行,但多點傳送僅用於探索代理程式的位置。

探索傳輸

探索傳輸的工作方式與可靠傳輸相同,差別在於它使用探索代理程式來尋找要連線的 URI 清單。

如需詳細資訊,請參閱 探索傳輸參考

ZeroConf 傳輸

ZeroConf 傳輸提供 探索,其工作方式與 探索傳輸 相同,但 ZeroConf 傳輸並非使用我們自己的基於多點傳送的探索機制(這允許您設定確切的多點傳送位址和埠等),而是使用 ZeroConf 傳輸。

如需詳細資訊,請參閱 ZeroConf 傳輸參考

伺服器端選項

可以使用許多選項來變更 ActiveMQ Classic 代理程式設定中 TransportConnector 的伺服器行為。 這些選項如下

屬性名稱 預設值 描述
allowLinkStealing false 這對 MQTT 傳輸預設為啟用。 連結竊取是指具有相同 ID(JMS 的 clientID)的兩個或多個連線中的最後一個連線被視為有效連線,而較舊的連線則由代理程式關閉。
discoveryURI|null` 如果已設定,則是用戶端連線尋找代理程式的多點傳送探索位址。  
enableStatusMonitor false 將監控連線以判斷是否被封鎖。
name null TransportConnector 執行個體的名稱。
rebalanceClusterClients false 會在拓撲變更時自動重新平衡叢集中的用戶端。
updateClusterClients false 如果啟用,則會更新用戶端連線(如果他們使用 failover:// 傳輸),以反映代理程式叢集的變更。
updateClusterClientsOnRemove false 如果從叢集中移除代理程式,則會更新用戶端。
updateClusterFilter null 以逗號分隔的正規表示式清單。 名稱與模式相符的代理程式將包含在用戶端更新中。
uri null 傳輸的繫結位址。

注意:以紅色顯示的屬性僅適用於 5.10 版(及更高版本)選項。

設定範例

<broker>
   <!-- ... -->

   <transportConnectors>
     <transportConnector name="openwire" uri="tcp://0.0.0.0:61616" enableStatusMonitor="true"/> 
   </<transportConnectors>

   <!-- ... -->
</broker>

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 The Apache Software Foundation 的商標。 版權所有 © 2024,The Apache Software Foundation。 依 Apache License 2.0 授權。