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 | 設定是否啟用追溯消費者。追溯消費者允許非持久性主題訂閱者接收在非持久性訂閱者開始之前發佈的舊訊息。 |