設定傳輸
傳輸設定選項
您可能會使用的第一種 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 傳輸相同,只是使用 New I/O (NIO) 套件,這可能會提供更好的效能。Java NIO 套件不應與 IBM 的 AIO4J 套件混淆。
若要從 TCP 切換到 NIO,只需變更 URI 的 scheme 部分。以下是在代理程式的 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 嵌入式代理程式的網路連線。
如需更多資訊,請參閱 Peer 傳輸參考
UDP 傳輸
這允許您透過 UDP 通訊。
如需更多資訊,請參閱 UDP 傳輸參考
多播傳輸
這允許您透過多播通訊。
如需更多資訊,請參閱 多播傳輸參考
HTTP 和 HTTPS 傳輸
這允許 ActiveMQ Classic 用戶端和代理程式透過 HTTP 通道傳輸。如果用戶端不是 JMS,您可能需要查看 REST 或 Ajax 支援。
如需更多資訊,請參閱 HTTP 和 HTTPS 傳輸參考
WebSockets 傳輸
此傳輸使用新的 HTML5 WebSockets 與代理程式交換訊息。如需更多資訊,請參閱 WebSockets 傳輸參考
Stomp 傳輸
一種純文字傳輸,可以與多種語言搭配使用。詳細資訊請參閱 Stomp。
通用 URI
您可以透過 URI 語法設定其他功能,如下所示…
連線設定 URI
任何 Apache ActiveMQ Classic JMS 連線都可以使用 URL 設定,或透過在 ActiveMQConnection 或 ActiveMQConnectionFactory 物件本身上明確設定屬性來設定。
如需更多資訊,請參閱 連線設定 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 傳輸參考
伺服器端選項
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>