用戶端連線至代理程式後,即可路由訊息及傳送訊息。在此階段中,代理程式會負責建立與管理不同類型的實體目標,確保訊息流量順暢,以及有效使用資源。代理程式使用與路由和目標相關的代理程式特性,以符合應用程式所需的方式來管理這些工作。
請記住,代理程式上的實體目標,是訊息在傳送到訊息用戶之前所儲存的記憶體位置。實體目標有四種:
管理員建立的目標由管理員使用 GUI (imqadmin) 或 imqcmd 公用程式所建立。這些目標對應到以程式設計方式建立的邏輯目標,或對應到由管理員建立並供用戶端查找的目標受管理物件。您可以使用 imqcmd 公用程式,為每個管理員建立的目標設定或更新特性。
自動建立的目標會在每次訊息用戶或產生器嘗試存取不存在的目標時,由代理程式自動建立。這些目標一般會在開發期間使用。您可以設定代理程式特性,以防止建立此類目標。您可以設定代理程式特性,以在特定代理程式上配置所有自動建立的目標。
代理程式會自動銷毀以後不再使用的自動建立目標;亦即,當此目標沒有使用者用戶端且不再包含任何訊息時,就會自動銷毀。如果代理程式重新啟動,則只有在目標包含永久性訊息時,才會重新建立這類目標。
暫時目標由需要目標 (用於接收訊息回覆) 的用戶端,透過程式設計方式明確建立和銷毀。如其名稱所示,這些目標是暫時的,僅在建立的連線期間由代理程式維護。
暫時目標不會永久儲存,也不會在代理程式重新啟動時再次建立,但是它們對於管理工具而言是可見的。
停用的訊息佇列是代理程式啟動後自動建立的專用目標,用於儲存停用的訊息以備診斷之用。您可以使用 imqcmd 公用程式,設定停用的訊息佇列特性。
您可以使用 imqcmd 公用程式管理目標。管理目標包括下列一項或多項工作:
建立、暫停、繼續或銷毀目標
列出代理程式上的所有目標
顯示目標狀態與特性的相關資訊
顯示目標的度量資訊
壓縮目標用於存留訊息的磁碟空間
更新實體目標的特性
管理作業會隨所管理的目標類型而變更:管理員建立的目標、自動建立的目標、暫時目標或停用的訊息佇列。例如,暫時目標不需要明確銷毀,自動建立的特性會經由代理程式配置特性配置,並套用到該代理程式上所有自動建立的目標。
為了最佳化效能,您可以在建立或更新實體目標時設定特性。可以設定的特性包括下列項目:
目標的類型和名稱。
目標的個別限制和總計限制 (訊息的最大數目、最大總位元組數、每則訊息的最大位元組數、產生器的最大數目)。
超過個別限制或總計限制時,代理程式應執行的操作。
單一批次可以傳送的最大訊息數目。
目標的停用訊息是否應傳送到停用的訊息佇列。
如果是叢集代理程式,目標是否應複製到叢集的其他代理程式。
您也可以針對佇列目標配置備份用戶的最大數目,並且可以 (針對叢集代理程式) 指定是否要優先傳送到本機佇列。
您也可以配置停用的訊息佇列的限制和運作方式。不過請注意,此佇列的預設特性和標準佇列的預設特性不同。
目標可能使用大量資源 (取決於它們處理的訊息數目和大小,以及註冊的用戶數目和期限),因此必須密切管理這些資源,以確保良好的訊息傳送服務效能與可靠性。
您可以設定特性,以避免代理程式有過多的內送訊息,進而避免代理程式記憶體不足。代理程式使用三層記憶體保護,以在資源不足時維持訊息傳送服務作業:目標限制、系統範圍限制和系統記憶體臨界值。理想情況下,如果目標限制和系統範圍限制設定適當,則應絕對不會到達嚴重的系統記憶體臨界值。
您可以設定目標屬性,以管理每個目標的記憶體和訊息流量。例如,您可以指定允許用於目標的產生器最大數目、目標中允許的最大訊息數量 (或大小),以及每個單一訊息的最大大小。
您也可以指定到達這類限制時,代理程式應採取的反應措施:減緩產生器、捨棄最舊的訊息、捨棄最不重要的訊息,或拒絕最新的訊息。
您也可以使用特性,設定套用到代理程式上所有目標的限制:可以指定訊息總數和所有訊息使用的記憶體。如果達到整個系統的任何訊息限制,代理程式就會拒絕新的訊息。
最後,可以使用特性來設定臨界值,當到達臨界值時,代理程式會採取越來越嚴格的動作,以防止記憶體超過負載。此動作取決於記憶體資源的狀態:green (大量記憶體可用)、yellow (代理程式記憶體正在減少)、orange (代理程式記憶體不足),以及 red (代理程式無記憶體可用)。如果代理程式記憶體的狀態從 green 變為 red,代理程式會採取越來越嚴格的動作:
捨棄資料存放區中永久性訊息的內部記憶體副本。
減少產生器產生的非永久性訊息,最終使訊息停止流入代理程式。永久性訊息流量會自動受到代理程式對每個訊息要求的限制。