NMS.ActiveMQ URI 配置

配置 NMS.ActiveMQ

所有配置都是通過 URI 編碼的參數實現,無論是在連線還是目標上。通過 URI,您幾乎可以配置 NMS.ActiveMQ 用戶端的每個方面。下表顯示了完整的參數集。

連線 URI 參數


配置範例

使用通用的 NMSConnectionFactory 類看起來如下

var cf = new NMSConnectionFactory("activemq:tcp://127.0.0.1:61616?wireFormat.tightEncodingEnabled=true");

您也可以使用 ActiveMQ ConecctionFactory 實作目錄

var cf = new Apache.NMS.ActiveMQ.ConnectionFactory("tcp://127.0.0.1:61616?wireFormat.tightEncodingEnabled=true");

協定選項


選項 描述
tcp 使用 TCP/IP Socket 連接到 Broker。
ssl 使用 TCP/IP Socket 連接到 Broker,並新增 SSL 層。
discovery 使用探索傳輸來尋找 Broker
failover 使用容錯移轉傳輸來連接和重新連接到一個或多個 Broker

傳輸選項


TCP 傳輸選項

選項 預設值 描述
transport.useLogging false 記錄通過傳輸發送的資料。
transport.receiveBufferSize 8192 從 Socket 緩衝的資料量
transport.sendBufferSize 8192 寫入 Socket 之前緩衝的資料量
transport.receiveTimeout 0 等待更多資料的時間,零表示無限等待
transport.sendTimeout 0 傳送逾時,0 表示永遠等待完成
transport.requestTimeout 0 在請求命令被認為失敗之前等待的時間

探索傳輸選項

容錯移轉傳輸選項

在 NMS.ActiveMQ v1.4.0 之前,容錯移轉傳輸選項未使用 transport.* 前綴。

選項 預設值 描述
transport.timeout -1 傳送操作在失敗之前阻止的時間。
transport.initialReconnectDelay 10 傳輸第一次嘗試重新連接之前等待的時間(以毫秒為單位)。
transport.maxReconnectDelay 30000 傳輸在嘗試重新連接之前將等待的最大時間(以毫秒為單位)。
transport.backOffMultiplier 2 如果啟用 useExponentialBackOff,重新連線延遲將乘以的量。
transport.useExponentialBackOff true 是否應該在每次嘗試時增加連線嘗試之間的延遲,直到最大重新連線延遲。
transport.randomize true 是否應該從可用 URI 清單中隨機選擇要連接的 URI。
transport.maxReconnectAttempts 0 傳輸在失敗之前嘗試重新連線的最大次數(0 表示無限次重試)
transport.startupMaxReconnectAttempts 0 在從未建立連線時,傳輸在失敗之前嘗試重新連線的最大次數。(0 表示無限次重試)(包含在 NMS.ActiveMQ v1.5.0+ 中)
transport.reconnectDelay 10 傳輸在嘗試重新連線之前等待的延遲時間(以毫秒為單位)。
transport.backup false 容錯移轉傳輸是否應該維護熱備份。
transport.backupPoolSize 1 如果啟用,則會建立多少個熱備份連線。
transport.trackMessages false 保留傳輸中訊息的快取,該快取將在重新連線時刷新到 Broker
transport.maxCacheSize 256 如果啟用 trackMessages,則快取的訊息數。
transport.updateURIsSupported true 根據傳送到用戶端的 BrokerInfo 訊息更新已知的 Broker 清單。

連線選項


連線選項可以透過 connection.* 前綴或 nms.* 前綴設定,類似於 Java 用戶端的 jms.* 前綴設定。

選項 預設值 描述
connection.AsyncSend false 訊息是否以非同步方式傳送。
connection.AsyncClose true 是否應以非同步方式傳送關閉命令
connection.AlwaysSyncSend false 導致 Producer 傳送的所有訊息都以非同步方式傳送。
connection.CopyMessageOnSend true 複製 Producer 傳送的 Message 物件,以便用戶端可以重複使用 Message 物件,而不會影響傳輸中的訊息。
connection.ProducerWindowSize 0 ProducerWindowSize 是 Producer 在等待 Broker 確認訊息已接受先前傳送的訊息之前,將傳輸到 Broker 的最大記憶體位元組數。換句話說,這就是您配置 Producer 流控制視窗的方式,該視窗用於非同步傳送,其中用戶端負責管理記憶體使用量。預設值 0 表示用戶端沒有流控制。另請參閱 Producer 流控制
connection.useCompression false 是否應在傳送之前壓縮訊息主體。
connection.sendAcksAsync false 是否應以非同步方式傳送訊息 ack
connection.messagePrioritySupported true 是否應根據 Message Priority 標頭的值將訊息傳遞給用戶端。
connection.dispatchAsync false Broker 是否應以非同步方式將訊息傳遞到連線的消費者。
connection.watchTopicAdvisories true 用戶端是否應監看 Broker 的諮詢訊息,以追蹤暫時目的地的建立和刪除。

OpenWire 選項

選項 預設值 描述
wireFormat.stackTraceEnabled false 是否應將 Broker 上發生的例外狀況的堆疊追蹤傳送到用戶端?僅由 openwire 協定使用。
wireFormat.cacheEnabled false 是否應快取常用重複值,以便減少編組?僅由 openwire 協定使用。
wireFormat.tcpNoDelayEnabled false 不會影響線路格式,但會向對等方提供提示,指出應在通訊 Socket 上啟用 TCP nodelay。僅由 openwire 協定使用。
wireFormat.sizePrefixDisabled false 序列化的訊息是否應包含有效負載長度前綴?僅由 openwire 協定使用。
wireFormat.tightEncodingEnabled false 是否應針對 CPU 使用量最佳化線路大小?僅由 openwire 協定使用。
wireFormat.maxInactivityDuration 30000 最長非活動持續時間(在此時間之後,Socket 會被視為已死)以毫秒為單位。在某些平台上,Socket 可能需要很長時間才會顯示死亡,因此我們允許 Broker 在連線閒置一段時間後終止連線。由某些傳輸使用,以啟用保持連線心跳功能。設定為 <= 0 的值,以停用非活動監控。
maxInactivityDurationInitalDelay 10000 啟動最大非活動檢查的初始延遲(是的,「Inital」這個字應該拼寫錯誤)

目標 URI 參數


配置範例

d = session.CreateTopic("com.foo?consumer.prefetchSize=2000&consumer.noLocal=true");

一般選項


選項 預設值 描述
consumer.prefetchSize 1000 消費者將預先擷取的訊息數。已在 v1.7.0 中移除,請改用連線預先擷取策略。
consumer.maximumPendingMessageLimit 0 用於控制是否存在慢速消費者情況時是否會丟棄訊息。
consumer.noLocal false 與主題消費者上的 noLocal 標誌相同。此處公開,以便可以與佇列一起使用。
consumer.dispatchAsync false Broker 是否應以非同步方式將訊息傳遞到消費者。
consumer.retroactive false 這是一個追溯消費者嗎?。
consumer.selector null 與消費者一起使用的 JMS 選取器。
consumer.exclusive false 這是一個獨佔消費者嗎?
consumer.priority 0 允許您配置消費者優先順序

僅限 OpenWire 的選項


選項 預設值 描述
consumer.browser false  
consumer.networkSubscription false  
consumer.optimizedAcknowledge false 啟用最佳化的確認模式,其中訊息是以批次而非個別方式確認。或者,您可以為消費者使用 Session.DUPS_OK_ACKNOWLEDGE 確認模式,這通常會更快。警告啟用此問題可能會導致重新連線時自動確認出現一些問題
consumer.noRangeAcks false  
consumer.retroactive false 設定是否啟用追溯消費者。追溯消費者允許非持久性主題訂閱者接收在非持久性訂閱者開始之前發佈的舊訊息。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 Apache 軟體基金會的商標。版權所有 © 2024,Apache 軟體基金會。根據 Apache License 2.0 授權。