在本章中,我們將描述理解 Apache ActiveMQ Artemis 傳輸所需的概念,以及它們的配置位置和方式。

1. 接收器 (Acceptors)

在 Apache ActiveMQ Artemis 傳輸中,最重要的概念之一是接收器。讓我們直接深入了解一下在組態檔案 broker.xml 中以 XML 定義的接收器。

<acceptor name="netty">tcp://127.0.0.1:61617</acceptor>

接收器總是定義在 acceptors 元素內。在 acceptors 元素中可以定義一個或多個接收器。每個伺服器的接收器數量沒有上限。

每個接收器都定義了連線到 Apache ActiveMQ Artemis 伺服器的方式。

在上面的例子中,我們定義了一個使用 Netty 在埠口 61617 上監聽連線的接收器。

acceptor 元素包含一個 URL,定義要建立的接收器類型及其設定。 URLschema 部分定義接收器類型,可以是 tcpvm,分別對應 Netty 或 In VM 接收器。對於 NettyURL 的主機和埠口定義 acceptor 將綁定到哪個主機和埠口。對於 In VM,URLAuthority 部分定義唯一的伺服器 ID。

acceptor 也可以使用一組 key=value 對進行設定,用於設定特定的傳輸,有效的 key=value 對取決於所使用的特定傳輸,並直接傳遞到基礎傳輸。這些設定在 URL 中作為查詢的一部分,如下所示

<acceptor name="netty">tcp://127.0.0.1:61617?sslEnabled=true;keyStorePath=/path</acceptor>

2. 連接器 (Connectors)

接收器用於在伺服器上定義如何接受連線,而連接器則用於定義如何連線到伺服器。

讓我們看一下在 broker.xml 檔案中定義的連接器

<connector name="netty">tcp://127.0.0.1:61617</connector>

連接器可以定義在 connectors 元素內。在 connectors 元素中可以定義一個或多個連接器。每個伺服器的連接器數量沒有上限。

當伺服器本身充當客戶端時,會使用 connector,例如:

  • 當一個伺服器橋接到另一個伺服器時

  • 當伺服器參與叢集時

在這些情況下,伺服器需要知道如何連線到其他伺服器。這由 connectors 定義。

3. 直接從客戶端設定傳輸

我們如何使用它需要連線到伺服器的資訊來設定核心 ClientSessionFactory

當設定核心 ClientSessionFactory 以直接與伺服器通信時,也會間接使用連接器。儘管在這種情況下,不需要在伺服器端配置中定義此類連接器,而是直接指定適當的 URI 即可。

這是一個建立 ClientSessionFactory 的範例,它將直接連線到我們在本章前面定義的接收器,它使用標準的 Netty TCP 傳輸,並嘗試連線到 localhost (預設) 的埠口 61617

ServerLocator locator = ActiveMQClient.createServerLocator("tcp://127.0.0.1:61617");

ClientSessionFactory sessionFactory = locator.createSessionFactory();

ClientSession session = sessionFactory.createSession(...);

同樣地,如果您正在使用 JMS,您可以直接在客戶端設定 JMS 連線工廠

ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61617");

Connection jmsConnection = connectionFactory.createConnection();

4. 設定 Netty 傳輸

開箱即用,Apache ActiveMQ Artemis 目前使用 Netty,一個高效能的底層網路程式庫。

我們的 Netty 傳輸可以通過幾種不同的方式進行設定;使用直接的 TCP 套接字、SSL 或通過 HTTP 或 HTTPS 進行隧道傳輸。

我們相信這可以滿足絕大多數的傳輸需求。

4.1. 單一埠口支援

Apache ActiveMQ Artemis 支援對所有協定使用單一埠口,Apache ActiveMQ Artemis 將自動偵測正在使用的協定是 CORE、AMQP、STOMP、MQTT 還是 OPENWIRE,並使用適當的 Apache ActiveMQ Artemis 處理常式。它還會偵測是否正在使用 HTTP 或 Web Sockets 等協定,並使用適當的解碼器。AMQP、STOMP 和 MQTT 支援 Web Sockets。

可以通過使用 Acceptor 上的 protocols 參數來限制支援的協定,如下所示

<acceptor name="netty">tcp://127.0.0.1:61617?protocols=CORE,AMQP</acceptor>

4.2. 設定 Netty TCP

Netty TCP 是一種簡單的未加密的基於 TCP 套接字的傳輸。如果您正在不信任的網路中執行連線,請注意此傳輸是未加密的。您可能需要查看 SSL 或 HTTPS 設定。

使用 Netty TCP 傳輸時,所有連線都從客戶端發起 (即伺服器不發起任何到客戶端的連線)。這與通常只允許在一個方向上發起連線的防火牆策略配合良好。

用於 Netty 的 tcp URL 協定的所有有效鍵都定義在類別 org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants 中。大多數參數可以與接收器或連接器一起使用,有些僅適用於接收器。以下參數可用於設定 Netty 以進行簡單的 TCP

hostport 參數僅在核心 API 中使用,在 XML 設定中,這些參數設定在 URI 主機和埠口中。

host

這指定要連線到 (在設定連接器時) 或監聽 (在設定接收器時) 的主機名稱或 IP 位址。此屬性的預設值為 localhost。設定接收器時,可以使用逗號分隔來指定多個主機或 IP 位址。也可以指定 0.0.0.0 來接受來自所有主機網路介面的連線。當指定連接器的主機時,指定多個位址是無效的;連接器連線到一個特定位址。

別忘了指定主機名稱或 IP 位址!如果您希望您的伺服器能夠接受來自其他節點的連線,您必須指定接收器將在其上綁定並監聽傳入連線的主機名稱或 IP 位址。預設值是 localhost,當然無法從遠端節點存取!

port

這指定要連線到 (在設定連接器時) 或監聽 (在設定接收器時) 的埠口。此屬性的預設值為 61616

tcpNoDelay

如果這是 true,則會停用 Nagle 演算法。這是一個 Java (客戶端) 套接字選項。此屬性的預設值為 true

tcpSendBufferSize

此參數決定 TCP 發送緩衝區的大小 (以位元組為單位)。此屬性的預設值為 32768 位元組 (32KiB)。

TCP 緩衝區大小應根據您的網路頻寬和延遲進行調整。這是一個很好的連結,解釋了 背後的理論。

總之,TCP 發送/接收緩衝區大小應計算為

buffer_size = bandwidth * RTT.

其中頻寬以每秒位元組數表示,網路往返時間 (RTT) 以秒為單位。RTT 可以使用 ping 實用程式輕鬆測量。

對於快速網路,您可能需要將緩衝區大小從預設值增加。

tcpReceiveBufferSize

此參數決定 TCP 接收緩衝區的大小 (以位元組為單位)。此屬性的預設值為 32768 位元組 (32KiB)。

writeBufferLowWaterMark

此參數決定 Netty 寫入緩衝區的低水位標記。一旦寫入緩衝區中排隊的位元組數超過高水位標記,然後下降到低於此值,Netty 的通道將再次開始可寫入。此屬性的預設值為 32768 位元組 (32KiB)。

writeBufferHighWaterMark

此參數決定 Netty 寫入緩衝區的高水位標記。如果寫入緩衝區中排隊的位元組數超過此值,Netty 的通道將開始不可寫入。此屬性的預設值為 131072 位元組 (128KiB)。

batchDelay

在將封包寫入傳輸之前,可以設定 Apache ActiveMQ Artemis 將寫入批次處理最多 batchDelay 毫秒。這可以提高非常小的訊息的整體吞吐量。它以增加訊息傳輸的平均延遲為代價。此屬性的預設值為 0 毫秒。

directDeliver

當訊息到達伺服器並傳遞給等待的消費者時,預設情況下,傳遞是在訊息到達的同一執行緒上完成的。這在具有相對較小的訊息和少量消費者的環境中提供了良好的延遲,但代價是整體吞吐量和可擴展性 - 特別是在多核心機器上。如果您想要最低的延遲並可能降低吞吐量,則可以使用 directDeliver 的預設值 (即 true)。如果您願意承擔一些額外的延遲影響,但想要最高的吞吐量,請將 directDeliver 設定為 false

nioRemotingThreads

此已棄用。它已由 remotingThreads 取代,如果您正在使用此值,請更新您的設定。

remotingThreads

預設情況下,Apache ActiveMQ Artemis 將使用等於 Runtime.getRuntime().availableProcessors() 報告的核心 (或超執行緒) 數量的三倍的執行緒數來處理傳入的封包。如果您想覆蓋此值,您可以通過指定此參數來設定執行緒數。此參數的預設值為 -1,表示使用 Runtime.getRuntime().availableProcessors() * 3 的值。

localAddress

設定 Netty 連接器時,可以指定客戶端在連線到遠端位址時將使用的本機位址。這通常在應用程式伺服器中或在執行嵌入式時使用,以控制用於輸出連線的位址。如果未設定本機位址,則連接器將使用任何可用的本機位址

localPort

設定 Netty 連接器時,可以指定客戶端在連線到遠端位址時將使用的本機埠口。這通常在應用程式伺服器中或在執行嵌入式時使用,以控制用於輸出連線的埠口。如果使用本機埠口的預設值 0,則連接器將讓系統選擇一個臨時埠口。有效的埠口為 0 到 65535

connectionsAllowed

這僅對接收器有效。它限制接收器將允許的連線數。當達到此限制時,會將 DEBUG 等級的訊息發送到記錄檔,並且會拒絕連線。正在使用的客戶端類型將決定拒絕連線時會發生什麼。在 core 客戶端的情況下,它將導致 org.apache.activemq.artemis.api.core.ActiveMQConnectionTimedOutException。預設值為 -1 (無限)

handshake-timeout

防止未經授權的用戶端開啟大量連線並使其保持開啟狀態。由於每個連線都需要一個檔案控制代碼,這會消耗資源,導致其他用戶端無法使用這些資源。一旦連線通過驗證,即可強制執行關於資源消耗的通常規則。預設值設定為 10 秒。每個整數都是有效值。當設定值為零或負整數時,此功能將關閉。更改值需要重新啟動伺服器才能生效。

autoStart

決定 Broker 啟動時是否自動啟動 acceptor。預設值為 true

4.3. 設定 Netty 原生傳輸

Netty 原生傳輸支援適用於選定的作業系統平台。這允許 Apache ActiveMQ Artemis 使用原生 sockets/io 而不是 Java NIO。

這些原生傳輸新增了特定於特定平台的功能、產生較少的垃圾資料,並且與基於 Java NIO 的傳輸相比,通常可提高效能。

用戶端和伺服器都可以從中受益。

目前支援的平台。

  • 執行 64 位元 JVM 的 Linux

  • 執行 64 位元 JVM 的 MacOS

如果偵測到支援的平台,Apache ActiveMQ Artemis 預設會啟用對應的原生傳輸。

如果在不支援的平台上執行,或載入原生程式庫時發生任何問題,Apache ActiveMQ Artemis 將會回退到 Java NIO。

4.3.1. Linux 原生傳輸

在支援的 Linux 平台上,會使用 Epoll,請參閱 https://en.wikipedia.org/wiki/Epoll

以下屬性是此原生傳輸所特有的

useEpoll

如果偵測到支援的 Linux 平台正在執行 64 位元 JVM,則啟用 epoll 的使用。將此設定為 false 將會強制使用 Java NIO 而不是 epoll。預設值為 true

4.3.2. MacOS 原生傳輸

在支援的 MacOS 平台上,會使用 KQueue,請參閱 https://en.wikipedia.org/wiki/Kqueue

以下屬性是此原生傳輸所特有的

useKQueue

如果偵測到支援的 MacOS 平台正在執行 64 位元 JVM,則啟用 kqueue 的使用。將此設定為 false 將會強制使用 Java NIO 而不是 kqueue。預設值為 true

4.4. 設定 Netty SSL

Netty SSL 與 Netty TCP 傳輸類似,但它透過使用安全通訊端層 SSL 加密 TCP 連線來提供額外的安全性。

請參閱 範例,以取得使用 Netty SSL 的完整範例。

Netty SSL 使用與 Netty TCP 相同的所有屬性,但新增了以下額外屬性

sslContext

只有在 org.apache.activemq.artemis.core.remoting.impl.ssl.CachingSSLContextFactory 處於啟用狀態時才會評估的可選快取金鑰,用於快取初始建立的 SSL 環境並重複使用它。如果未指定,CachingSSLContextFactory 將根據給定的金鑰儲存/信任儲存參數自動計算快取金鑰。如需更多詳細資訊,請參閱 設定 SSLContextFactory

sslEnabled

必須為 true 才能啟用 SSL。預設值為 false

sslAutoReload

必須為 true 才能讓 Broker「監看」acceptor 的 keyStorePath 和/或 trustStorePath,並在更新時叫用 reload()。監看週期由組態重新載入功能控制。預設值為 false

keyStorePath

acceptor 上使用時,這是伺服器上 SSL 金鑰儲存區的路徑,其中包含伺服器的憑證(無論是自我簽署或由授權單位簽署)。

connector 上使用時,這是用戶端 SSL 金鑰儲存區的路徑,其中包含用戶端憑證。只有在使用雙向 SSL(即相互驗證)時,此設定才與 connector 相關。雖然此值是在伺服器上設定的,但會由用戶端下載和使用。如果用戶端需要使用與伺服器上設定的路徑不同的路徑,則它可以透過使用慣用的 "javax.net.ssl.keyStore" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.keyStore" 系統屬性來覆寫伺服器端設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。

keyStorePassword

acceptor 上使用時,這是伺服器端金鑰儲存區的密碼。

connector 上使用時,這是用戶端金鑰儲存區的密碼。只有在使用雙向 SSL(即相互驗證)時,此設定才與 connector 相關。雖然此值可以在伺服器上設定,但會由用戶端下載和使用。如果用戶端需要使用與伺服器上設定的密碼不同的密碼,則它可以透過使用慣用的 "javax.net.ssl.keyStorePassword" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.keyStorePassword" 系統屬性來覆寫伺服器端設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。

keyStoreType

所使用的金鑰儲存區類型。例如,JKSJCEKSPKCS12PEM 等。此值也可以透過 "javax.net.ssl.keyStoreType" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.keyStoreType" 系統屬性來設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。預設值為 JKS

keyStoreProvider

用於金鑰儲存區的提供者。例如,SUNSunJCE 等。此值也可以透過 "javax.net.ssl.keyStoreProvider" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.keyStoreProvider" 系統屬性來設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。預設值為 null

keyStoreAlias

acceptor 上使用時,這是從 SSL 金鑰儲存區(透過 keyStorePath 指定)選取,以便在用戶端連線時向用戶端呈現的別名。

connector 上使用時,這是從 SSL 金鑰儲存區(透過 keyStorePath 指定)選取,以便在用戶端連線到伺服器時向伺服器呈現的別名。只有在使用雙向 SSL(即相互驗證)時,此設定才與 connector 相關。

預設值為 null

trustStorePath

acceptor 上使用時,這是伺服器端 SSL 金鑰儲存區的路徑,其中包含伺服器信任的所有用戶端的金鑰。只有在使用雙向 SSL(即相互驗證)時,此設定才與 acceptor 相關。

connector 上使用時,這是用戶端 SSL 金鑰儲存區的路徑,其中包含用戶端信任的所有伺服器的公開金鑰。雖然此值可以在伺服器上設定,但會由用戶端下載和使用。如果用戶端需要使用與伺服器上設定的路徑不同的路徑,則它可以透過使用慣用的 "javax.net.ssl.trustStore" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.trustStore" 系統屬性來覆寫伺服器端設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。

trustStorePassword

acceptor 上使用時,這是伺服器端信任儲存區的密碼。只有在使用雙向 SSL(即相互驗證)時,此設定才與 acceptor 相關。

connector 上使用時,這是用戶端信任儲存區的密碼。雖然此值可以在伺服器上設定,但會由用戶端下載和使用。如果用戶端需要使用與伺服器上設定的密碼不同的密碼,則它可以透過使用慣用的 "javax.net.ssl.trustStorePassword" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.trustStorePassword" 系統屬性來覆寫伺服器端設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。

trustStoreType

所使用的信任儲存區類型。例如,JKSJCEKSPKCS12PEM 等。此值也可以透過 "javax.net.ssl.trustStoreType" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.trustStoreType" 系統屬性來設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。預設值為 JKS

trustStoreProvider

用於信任儲存區的提供者。例如,SUNSunJCE 等。此值也可以透過 "javax.net.ssl.trustStoreProvider" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.trustStoreProvider" 系統屬性來設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。預設值為 null

enabledCipherSuites

無論是在 acceptorconnector 上使用,這都是用於 SSL 通訊的密碼套件逗號分隔清單。預設值為 null,這表示將使用 JVM 的預設值。

enabledProtocols

無論是在 acceptorconnector 上使用,這都是用於 SSL 通訊的協定逗號分隔清單。預設值為 null,這表示將使用 JVM 的預設值。

needClientAuth

此屬性僅適用於 acceptor。它告訴連線到此 acceptor 的用戶端,需要雙向 SSL。有效值為 truefalse。預設值為 false

此屬性優先於 wantClientAuth,如果其值設定為 true,則會忽略 wantClientAuth
wantClientAuth

此屬性僅適用於 acceptor。它告訴連線到此 acceptor 的用戶端,已請求但不需要雙向 SSL。有效值為 truefalse。預設值為 false

如果屬性 needClientAuth 設定為 true,則該屬性將優先,並將忽略此屬性。
verifyHost

connector 上使用時,伺服器的 SSL 憑證的 CN 或主體替代名稱值將與連線的主機名稱進行比較,以驗證是否相符。這對於單向和雙向 SSL 都很有用。

acceptor 上使用時,連線的用戶端 SSL 憑證的 CN 或主體替代名稱值將與其主機名稱進行比較,以驗證是否相符。這僅對雙向 SSL 有用。

有效值為 truefalse。對於 connector,預設值為 true,對於 acceptor,預設值為 false

trustAll

connector 上使用時,無論設定的信任儲存區為何,用戶端都會隱式信任所提供的伺服器憑證。

此設定主要僅供測試使用,不應在生產環境中使用。

有效值為 truefalse。預設值為 false

forceSSLParameters

當用於 connector 時,任何設定為 connector 參數的 SSL 設定,將會取代 JVM 系統屬性,包括 javax.net.ssl 和 ActiveMQ 系統屬性,以配置此 connector 的 SSL 環境。

有效值為 truefalse。預設值為 false

useDefaultSslContext

僅在 connector 上有效。允許 connector 使用「預設」SSL 環境 (透過 SSLContext.getDefault()),該環境可由用戶端以程式方式設定 (透過 SSLContext.setDefault(SSLContext))。如果設定為 true,則除了 sslEnabled 以外的所有其他 SSL 相關參數都會被忽略。

有效值為 truefalse。預設值為 false

sslProvider

用於在 JDKOPENSSL 之間更改 SSL 提供者。預設值為 JDK。如果與 OPENSSL 一起使用,您可以將 netty-tcnative 新增到您的類別路徑,以使用原生安裝的 openssl。如果您想使用特殊的密碼套件 - 橢圓曲線組合(透過 openssl 支援,但 JDK 提供者不支援),這會很有用。有關更多資訊,請參閱 https://en.wikipedia.org/wiki/Comparison_of_TLS_implementations

sniHost

當在 acceptor 上使用時,sniHost 是一個正規表示式,用於匹配傳入 SSL 連線上的 server_name 擴展。如果名稱不匹配,則會拒絕與 acceptor 的連線。如果發生這種情況,將會記錄 WARN 訊息。如果傳入的連線不包含 server_name 擴展,則將會接受該連線。

當在 connector 上使用時,sniHost 值用於 SSL 連線上的 server_name 擴展。

trustManagerFactoryPlugin

這在 acceptorconnector 上都有效。它定義了實現 org.apache.activemq.artemis.api.core.TrustManagerFactoryPlugin 的類別名稱。這是一個簡單的介面,只有一個方法,該方法返回一個 javax.net.ssl.TrustManagerFactory。當初始化底層的 javax.net.ssl.SSLContext 時,將會使用 TrustManagerFactory。這允許對 broker 和用戶端信任的對象進行細緻的客製化。

此值優先於所有其他適用於信任管理器的 SSL 參數(即 trustAlltruststoreProvidertruststorePathtruststorePasswordcrlPath)。

指定的任何外掛程式都需要放置在broker 的類別路徑中。

4.4.1. 配置 SSLContextFactory

如果您使用 JDK 作為 SSL 提供者(預設值),您可以配置要使用的 SSLContextFactory。目前提供以下兩種實作

  • org.apache.activemq.artemis.core.remoting.impl.ssl.DefaultSSLContextFactory(預設註冊)

  • org.apache.activemq.artemis.core.remoting.impl.ssl.CachingSSLContextFactory

您也可以建立自己的 org.apache.activemq.artemis.spi.core.remoting.ssl.SSLContextFactory 實作。

這些實作由 java.util.ServiceLoader 加載,因此您需要在 META-INF/services/org.apache.activemq.artemis.spi.core.remoting.ssl.SSLContextFactory 檔案中宣告您的實作。如果有多個實作可用,則會選取具有最高 priority 的實作。

因此,例如,如果您想使用 org.apache.activemq.artemis.core.remoting.impl.ssl.CachingSSLContextFactory,您需要將一個包含內容 org.apache.activemq.artemis.core.remoting.impl.ssl.CachingSSLContextFactoryMETA-INF/services/org.apache.activemq.artemis.spi.core.remoting.ssl.SSLContextFactory 檔案新增到您的類別路徑中。

OPENSSL SSL 提供者存在類似的機制,在這種情況下,您可以配置 OpenSSLContextFactory。目前提供以下兩種實作

  • org.apache.activemq.artemis.core.remoting.impl.ssl.DefaultOpenSSLContextFactory(預設註冊)

  • org.apache.activemq.artemis.core.remoting.impl.ssl.CachingOpenSSLContextFactory

您也可以建立自己的 org.apache.activemq.artemis.spi.core.remoting.ssl.OpenSSLContextFactory 實作。

4.5. 配置 Netty HTTP

Netty HTTP 通過 HTTP 協議傳輸數據包。在防火牆僅允許 HTTP 流量通過的情況下,它會很有用。

請參閱範例,以獲取使用 Netty HTTP 的完整工作範例。

Netty HTTP 使用與 Netty TCP 相同的屬性,但新增了以下額外屬性

httpEnabled

在用戶端上啟用 http。這在 broker 上不是必需的。透過單一埠支援,Apache ActiveMQ Artemis 現在將自動偵測是否正在使用 http 並自行配置。

httpClientIdleTime

用戶端在傳送空的 http 請求以保持連線活躍之前可以閒置的時間長度

httpClientIdleScanPeriod

掃描閒置用戶端的頻率(以毫秒為單位)

httpResponseTime

伺服器在傳送空的 http 回應以保持連線活躍之前可以等待的時間長度

httpServerScanPeriod

掃描需要回應的用戶端的頻率(以毫秒為單位)

httpRequiresSessionId

如果為 true,則用戶端會在第一次呼叫後等待接收會話 ID。當 http connector 連接到 servlet acceptor 時使用 (不建議)

4.6. 配置 Netty SOCKS Proxy

所有這些參數僅適用於 connector 和/或用戶端 URL。

將迴路位址(例如 localhost127.0.0.1)用作 connector 或 URL 的目標,將會規避這些配置屬性的應用。換句話說,即使設定了這些屬性,也不會配置 SOCKS Proxy 支援。
socksEnabled

是否在 connector 上啟用 SOCKS 支援。

socksHost

要使用的 SOCKS 伺服器的名稱。

socksPort

要使用的 SOCKS 伺服器的埠。

socksVersion

要使用的 SOCKS 版本。必須是整數。預設值為 5

socksUsername

連接到 socksHost 時要使用的使用者名稱。

socksPassword

連接到 socksHost 時要使用的密碼。僅在 socksVersion5 時適用。

socksRemoteDNS

是否建立未解析的遠端目的地 socket 並停用 DNS 解析。預設值為 false