自動
從 5.13.0 版本開始,ActiveMQ Classic 支援線路格式協定偵測。OpenWire、STOMP、AMQP 和 MQTT 可以自動偵測。這允許一個傳輸方式被所有 4 種用戶端類型共用。
在 TCP 上啟用自動
若要設定 ActiveMQ Classic 在 TCP 連線上自動線路格式偵測,請使用 auto
傳輸前綴。例如,在您的 XML 檔案中加入以下傳輸設定
<transportConnector name="auto" uri="auto://127.0.0.1:5671"/>
在 SSL 上啟用自動
若要設定 ActiveMQ Classic 在 SSL 連線上自動線路格式偵測,請使用 auto+ssl
傳輸前綴。例如,在您的 XML 檔案中加入以下傳輸設定
<transportConnector name="auto+ssl" uri="auto+ssl://127.0.0.1:5671"/>
- 有關在 ActiveMQ Classic 中使用 SSL 的更多詳細資訊,請參閱以下文章 (如何使用 SSL)。
在 NIO 上啟用自動
若要設定 ActiveMQ Classic 在 NIO TCP 連線上自動線路格式偵測,請使用 auto+nio
傳輸前綴。例如,在您的 XML 檔案中加入以下傳輸設定
<transportConnector name="auto+nio" uri="auto+nio://127.0.0.1:5671"/>
在 NIO SSL 上啟用自動
若要設定 ActiveMQ Classic 在 NIO SSL 連線上自動線路格式偵測,請使用 auto+nio+ssl
傳輸前綴。例如,在您的 XML 檔案中加入以下傳輸設定
<transportConnector name="auto+nio+ssl" uri="auto+nio+ssl://127.0.0.1:5671"/>
設定自動傳輸選項
有一些設定選項可以設定。
參數名稱 | 預設值 | 描述 |
---|---|---|
protocolDetectionTimeOut | 30000 | 連線逾時前的時間,以毫秒為單位。這類似於 maxInactivityDuration。如果用戶端建立連線,但沒有傳送資料或足夠的資料來偵測協定,則執行緒會坐等更多資料從 Socket 傳入。這將讓代理程式在一段時間後,如果連線沒有完成協定初始化,則終止連線。預設值為 30 秒。設定預設值為 <= 0 可停用此功能。 |
maxConnectionThreadPoolSize | MAX_INT | 此選項允許設定處理連線嘗試的執行緒池的最大大小。如果同時有許多不同的用戶端嘗試連線,降低此數值可以協助防止代理程式耗盡執行緒。預設值為 MAX_INT,表示關閉此功能。 |
以下範例設定傳輸的最大協定偵測時間為 5 秒
<transportConnector name="auto" uri="auto://127.0.0.1:5671?protocolDetectionTimeOut=5000"/>
設定線路格式
OpenWire 是 ActiveMQ Classic 使用的預設線路格式。它為高速訊息傳遞提供高效的二進位格式。OpenWire 選項可以在 JMS 用戶端的連線 URI 字串或代理程式的傳輸綁定 URI 上設定。
參數前綴 | 描述 |
---|---|
wireFormat. | 將選項應用於所有線路格式。 |
wireFormat.default. | 將選項應用於預設格式,即 OpenWire。 |
wireFormat.stomp. | 將選項應用於 STOMP 線路格式。 |
wireFormat.amqp. | 將選項應用於 AMQP 線路格式。 |
wireFormat.mqtt. | 將選項應用於 MQTT 線路格式。 |
以下是將屬性應用於所有格式的範例
<transportConnector name="auto" uri="auto://127.0.0.1:5671?wireFormat.maxFrameSize=1000"/>
以下是僅應用於 OpenWire 的屬性範例
<transportConnector name="auto" uri="auto://127.0.0.1:5671?wireFormat.default.maxFrameSize=1000"/>
設定啟用的線路協定
預設情況下,所有線路協定都可用。 可以設定只啟用特定格式,方法是設定屬性 auto.protocols.
值 | 描述 |
---|---|
default | 啟用 OpenWire |
amqp | 啟用 AMQP 格式 |
stomp | 啟用 STOMP 格式 |
mqtt | 啟用 MQTT 格式 |
以下範例顯示僅啟用 OpenWire 和 STOMP
<transportConnector name="auto" uri="auto://127.0.0.1:5671?auto.protocols=default,stomp"/>