Apache.NMS.AMQP 設定
客戶端設定
此檔案詳細說明了客戶端的各種設定選項、相關設定的語法,以及定義 ConnectionFactory 時可以設定的各種 URI 選項。
連線 URI
客戶端連線 URI 的基本格式如下
amqp[s]://hostname:port[?option=value[&option2=value...]]
其中 amqps 和 scheme 指定使用 SSL/TLS。
客戶端可以使用 URI 設定多種不同的設定,這些設定在定義 ConnectionFactory 時使用,詳細資訊請參閱以下各節。
NMS 設定選項
這些選項適用於 NMS 物件的行為,例如 Connection、Session、MessageConsumer 和 MessageProducer。
- nms.username 用於驗證連線的使用者名稱值。
- nms.password 用於驗證連線的密碼值。
- nms.clientId 應用於連線的 ClientId 值。
- nms.localMessageExpiry 控制 MessageConsumer 實例是否會在本地過濾過期的訊息或傳遞它們。預設情況下,此值設定為 true,過期的訊息將被過濾。
- nms.sendTimeout 超時值,控制客戶端在同步訊息傳送完成之前等待多長時間,然後才返回錯誤。預設情況下,客戶端會無限期等待傳送完成。
- nms.requestTimeout 超時值,控制客戶端在各種同步交互(例如開啟 producer 或 consumer)完成之前等待多長時間,然後才返回錯誤。不影響同步訊息傳送。預設情況下,客戶端會無限期等待請求完成。
- nms.clientIdPrefix 可選的前綴值,用於在為 JMS ConnectionFactory 建立新連線時產生的客戶端 ID 值。預設前綴是「ID:」。
- nms.connectionIdPrefix 可選的前綴值,用於在為 JMS ConnectionFactory 建立新連線時產生的連線 ID 值。此連線 ID 用於記錄來自 JMS 連線物件的一些資訊,因此可設定的前綴可以更容易地追蹤日誌。預設前綴是「ID:」。
TCP 傳輸設定選項
當使用純 TCP 連接到遠端時,這些選項會設定底層 socket 的行為。這些選項會與其他設定選項一起附加到連線 URI,例如
amqp://127.0.0.1:5672?nms.clientId=foo&transport.receiveBufferSize=30000
下面列出了完整的 TCP 傳輸選項集
- transport.sendBufferSize 指定 TCP socket 的 ReceiveBufferSize 選項。
- transport.receiveBufferSize 指定 TCP socket 的 SendBufferSize 選項。
- transport.receiveTimeout 指定 TCP socket 的 ReceiveTimeout 選項。
- transport.sendTimeout 指定 TCP socket 的 SendTimeout 選項。
- transport.tcpKeepAliveTime 指定傳輸保持連線訊號至閒置連線的頻率。
- transport.tcpKeepAliveInterval 指定在未收到先前保持連線傳輸的回應時,傳輸保持連線訊號的頻率。
- transport.tcpNoDelay 指定 TCP socket 的 NoDelay 選項。
如果設定了 tcpKeepAliveTime 或 tcpKeepAliveInterval,則會啟用 TCP 保持連線。
容錯移轉設定選項
啟用容錯移轉後,當由於某些原因與目前伺服器的連線遺失時,客戶端可以自動重新連線到另一台伺服器。容錯移轉 URI 始終以容錯移轉前綴和一組括號內包含的伺服器 URI 列表啟動。「nms.」選項應用於括號外的整體容錯移轉 URI,並影響 NMS 連線物件的整個生命週期。
容錯移轉的 URI 如下所示
failover:(amqp://host1:5672,amqp://host2:5672)?nms.clientId=foo&failover.maxReconnectAttempts=20
括號內的個別 broker 詳細資訊可以使用先前定義的「transport.」或「amqp.」選項,這些選項會在連線到每個主機時應用
failover:(amqp://host1:5672?amqp.option=value,amqp://host2:5672?transport.option=value)?nms.clientId=foo
下面列出了完整的容錯移轉設定選項集
- failover.initialReconnectDelay 客戶端在第一次嘗試重新連線到遠端 peer 之前將等待的時間長度。預設值為零,表示第一次嘗試會立即發生。
- failover.reconnectDelay 控制連續重新連線嘗試之間的延遲,預設為 10 毫秒。如果未啟用 backoff 選項,則此值保持不變。
- failover.maxReconnectDelay 客戶端在嘗試重新連線之前將等待的最大時間。僅當啟用 backoff 功能時才使用此值,以確保延遲不會變得太大。預設為 30 秒,作為連線嘗試之間的最大時間。
- failover.useReconnectBackOff 控制重新連線嘗試之間的時間是否應根據已設定的乘數增加。此選項預設為 true。
- failover.reconnectBackOffMultiplier 用於增加重新連線延遲值的乘數,預設為 2.0d。
- failover.maxReconnectAttempts 在向客戶端報告連線失敗之前允許的重新連線嘗試次數。預設為無限制或 (-1)。
- failover.startupMaxReconnectAttempts 對於從未連線到遠端 peer 的客戶端,此選項控制在報告連線失敗之前嘗試連線的次數。預設為使用 maxReconnectAttempts 的值。