1. 連線監控
OpenWire 有一些參數可以控制如何監控每個連線,它們是:
- maxInactivityDuration
-
它指定在未收到任何資料的情況下,broker 關閉連線的時間(毫秒)。預設值為 30000。
- maxInactivityDurationInitalDelay
-
它指定在連線上開始閒置監控之前的最大延遲時間(毫秒)。如果 broker 在同時建立許多連線的情況下處於負載狀態,這會很有用。預設值為 10000。
- useInactivityMonitor
-
值為 false 會完全停用 InactivityMonitor,連線將永遠不會逾時。預設情況下它是啟用的。在 broker 端,您不需要設定此選項。相反地,您可以將 connection-ttl 設定為 -1。
- useKeepAlive
-
表示是否在閒置連線上傳送 KeepAliveInfo 以防止其逾時。預設為啟用。如果連線在指定的時間內沒有收到任何資料,停用 keep alive 仍然會導致連線逾時。
請注意,一開始 InactivityMonitor 會協商適當的 maxInactivityDuration
和 maxInactivityDurationInitalDelay
。連線會採用最短的持續時間。
如需更多詳細資訊,請參閱 ActiveMQ InactivityMonitor。
2. 停用/啟用通知
預設情況下,會建立通知主題 (ActiveMQ 通知) 以便將特定類型的通知訊息傳送給正在監聽的用戶端。因此,通知位址和佇列將與使用者部署的位址和佇列一起顯示在管理主控台中。這有時會造成混淆,因為通知物件是在沒有使用者知情的情況下進行內部管理的。此外,使用者可能根本不希望使用通知主題(它們會導致額外的資源和效能損失),並且從 broker 端完全停用它們是很方便的。
該協定提供兩個參數來控制 broker 端上的通知行為。
- supportAdvisory
-
表示 broker 是否支援通知訊息。如果值為 true,將會建立通知位址/佇列。如果值為 false,則不會建立任何通知位址/佇列。預設值為
true
。 - suppressInternalManagementObjects
-
表示是否會將通知位址/佇列(如果有的話)註冊到管理服務(例如 JMX 登錄)。如果設定為 true,則不會註冊任何通知位址/佇列。如果設定為 false,則會註冊這些位址/佇列,並將顯示在管理主控台上。預設值為
true
。
這兩個參數是在 OpenWire acceptor
上設定的,例如:
<acceptor name="artemis">tcp://127.0.0.1:61616?protocols=OPENWIRE;supportAdvisory=true;suppressInternalManagementObjects=false</acceptor>
3. OpenWire 目的地快取
為了提高 broker 的效能,我們會保留最近使用的目的地快取,以便在將新訊息分派給它們時,我們不必每次都執行查閱。預設情況下,此快取最多可保存 16
個目的地。如果新增其他目的地,它們將覆蓋舊的記錄。如果您要處理大量的佇列,您可能需要增加此值,這可以透過設定 OpenWire acceptor
上的組態選項:openWireDestinationCacheSize
來完成,如下所示:
<acceptor name="artemis">tcp://127.0.0.1:61616?protocols=OPENWIRE;openWireDestinationCacheSize=64</acceptor>
此快取必須設定為 2 的次方,即:2
、16
、128
等。
4. 虛擬主題消費者目的地轉換
對於虛擬主題目的地的現有 OpenWire 消費者,可以設定一個對應函數,該函數會將虛擬主題消費者目的地轉換為 FQQN 位址。然後,此位址將表示消費者為多播綁定到表示虛擬主題的位址。
組態字串清單屬性 virtualTopicConsumerWildcards
的各部分以 ;
分隔。第一個是傳統樣式的目的地篩選器,它將目的地識別為屬於虛擬主題。第二個識別 paths
的數量,這些路徑識別消費者佇列,以便可以從目的地剖析該佇列。任何後續部分都是該對應的其他組態參數。
例如,預設虛擬主題的消費者前綴為 Consumer..
,則需要 virtualTopicConsumerWildcards
篩選器 Consumer.
.>;2
。當 URL 重要字元 >;
使用其十六進制碼點進行跳脫時,作為 URL 參數,這會轉換為 Consumer.*.%3E%3B2
。在 acceptor
URL 中,它會是:
<acceptor name="artemis">tcp://127.0.0.1:61616?protocols=OPENWIRE;virtualTopicConsumerWildcards=Consumer.*.%3E%3B2</acceptor>
這會使用組態的 int 元件 2
將 Consumer.A.VirtualTopic.Orders
轉換為 VirtualTopic.Orders::Consumer.A.VirtualTopic.Orders
的 FQQN,以將消費者佇列識別為目的地的最前面兩個路徑。virtualTopicConsumerWildcards
使用 ,
分隔符號為多個值。
4.1. selectorAware
對應支援一個選用參數 selectorAware
,當其為 true 時,會將任何選取器資訊從 OpenWire 消費者傳輸到任何自動建立的訂閱佇列的佇列篩選器中。
選取器/篩選器會以正常方式與佇列綁定一起保存,以便它在獨立於連線的消費者時運作。 |
請參閱 OpenWire 範例中包含的虛擬主題對應範例。