在本章中,我們將描述理解 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
,定義要建立的接收器類型及其設定。 URL
的 schema
部分定義接收器類型,可以是 tcp
或 vm
,分別對應 Netty
或 In VM 接收器。對於 Netty
,URL
的主機和埠口定義 acceptor
將綁定到哪個主機和埠口。對於 In VM,URL
的 Authority
部分定義唯一的伺服器 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
|
- 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
-
所使用的金鑰儲存區類型。例如,
JKS
、JCEKS
、PKCS12
、PEM
等。此值也可以透過 "javax.net.ssl.keyStoreType" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.keyStoreType" 系統屬性來設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。預設值為JKS
。 - keyStoreProvider
-
用於金鑰儲存區的提供者。例如,
SUN
、SunJCE
等。此值也可以透過 "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
-
所使用的信任儲存區類型。例如,
JKS
、JCEKS
、PKCS12
、PEM
等。此值也可以透過 "javax.net.ssl.trustStoreType" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.trustStoreType" 系統屬性來設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。預設值為JKS
。 - trustStoreProvider
-
用於信任儲存區的提供者。例如,
SUN
、SunJCE
等。此值也可以透過 "javax.net.ssl.trustStoreProvider" 系統屬性或 ActiveMQ 特定的 "org.apache.activemq.ssl.trustStoreProvider" 系統屬性來設定。如果用戶端上的另一個元件已在使用標準 Java 系統屬性,則 ActiveMQ 特定的系統屬性會很有用。預設值為null
。 - enabledCipherSuites
-
無論是在
acceptor
或connector
上使用,這都是用於 SSL 通訊的密碼套件逗號分隔清單。預設值為null
,這表示將使用 JVM 的預設值。 - enabledProtocols
-
無論是在
acceptor
或connector
上使用,這都是用於 SSL 通訊的協定逗號分隔清單。預設值為null
,這表示將使用 JVM 的預設值。 - needClientAuth
-
此屬性僅適用於
acceptor
。它告訴連線到此 acceptor 的用戶端,需要雙向 SSL。有效值為true
或false
。預設值為false
。此屬性優先於 wantClientAuth
,如果其值設定為 true,則會忽略wantClientAuth
。 - wantClientAuth
-
此屬性僅適用於
acceptor
。它告訴連線到此 acceptor 的用戶端,已請求但不需要雙向 SSL。有效值為true
或false
。預設值為false
。如果屬性 needClientAuth
設定為true
,則該屬性將優先,並將忽略此屬性。 - verifyHost
-
在
connector
上使用時,伺服器的 SSL 憑證的CN
或主體替代名稱值將與連線的主機名稱進行比較,以驗證是否相符。這對於單向和雙向 SSL 都很有用。在
acceptor
上使用時,連線的用戶端 SSL 憑證的CN
或主體替代名稱值將與其主機名稱進行比較,以驗證是否相符。這僅對雙向 SSL 有用。有效值為
true
或false
。對於 connector,預設值為true
,對於 acceptor,預設值為false
。 - trustAll
-
在
connector
上使用時,無論設定的信任儲存區為何,用戶端都會隱式信任所提供的伺服器憑證。此設定主要僅供測試使用,不應在生產環境中使用。 有效值為
true
或false
。預設值為false
。 - forceSSLParameters
-
當用於
connector
時,任何設定為 connector 參數的 SSL 設定,將會取代 JVM 系統屬性,包括 javax.net.ssl 和 ActiveMQ 系統屬性,以配置此 connector 的 SSL 環境。有效值為
true
或false
。預設值為false
。 - useDefaultSslContext
-
僅在
connector
上有效。允許connector
使用「預設」SSL 環境 (透過SSLContext.getDefault()
),該環境可由用戶端以程式方式設定 (透過SSLContext.setDefault(SSLContext)
)。如果設定為true
,則除了sslEnabled
以外的所有其他 SSL 相關參數都會被忽略。有效值為
true
或false
。預設值為false
。 - sslProvider
-
用於在
JDK
和OPENSSL
之間更改 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
-
這在
acceptor
或connector
上都有效。它定義了實現org.apache.activemq.artemis.api.core.TrustManagerFactoryPlugin
的類別名稱。這是一個簡單的介面,只有一個方法,該方法返回一個javax.net.ssl.TrustManagerFactory
。當初始化底層的javax.net.ssl.SSLContext
時,將會使用TrustManagerFactory
。這允許對 broker 和用戶端信任的對象進行細緻的客製化。此值優先於所有其他適用於信任管理器的 SSL 參數(即
trustAll
、truststoreProvider
、truststorePath
、truststorePassword
、crlPath
)。指定的任何外掛程式都需要放置在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.CachingSSLContextFactory
的 META-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。
將迴路位址(例如 localhost 或 127.0.0.1 )用作 connector 或 URL 的目標,將會規避這些配置屬性的應用。換句話說,即使設定了這些屬性,也不會配置 SOCKS Proxy 支援。 |
- socksEnabled
-
是否在
connector
上啟用 SOCKS 支援。 - socksHost
-
要使用的 SOCKS 伺服器的名稱。
- socksPort
-
要使用的 SOCKS 伺服器的埠。
- socksVersion
-
要使用的 SOCKS 版本。必須是整數。預設值為
5
。 - socksUsername
-
連接到
socksHost
時要使用的使用者名稱。 - socksPassword
-
連接到
socksHost
時要使用的密碼。僅在socksVersion
為5
時適用。 - socksRemoteDNS
-
是否建立未解析的遠端目的地 socket 並停用 DNS 解析。預設值為
false
。