| |
| Sun Java System Message Queue 3 2005Q4 管理指南 | |
第 4 章
配置代理程式代理程式的配置由一組配置檔案和在啟動時傳給 imqbrokerd 指令的選項所管理。本章說明可用的配置特性,以及如何使用它們來配置代理程式。
本章包含下列各節:
如需代理程式配置特性的完整參照資訊,請參閱第 14 章「代理程式特性參照」。
代理程式服務視服務或服務影響所及的代理程式元件之不同,代理程式配置特性可分為數個類別:
以下各節將分別說明這些服務,以及您根據自身需要而自訂服務時所使用的特性。
連線服務
訊息代理程式透過多種傳輸協定提供各種支援應用程式與管理用戶端的連線服務。與連線服務相關的代理程式配置特性,列於連線特性中。
表 4-1 說明可用的連線服務,依據兩種特徵區分:
透過設定代理程式的 imq.service.activelist 特性,即可將其配置為執行任一或所有這些連線服務。此特性的值是一組會在代理程式啟動時啟動的連線服務清單;若未明確指定此特性,將依預設啟動 jms 與 admin 服務。
每個連線服務也支援特定的認證與授權功能,請參閱安全性服務,以取得更多資訊。
連接埠對映器
每種連線服務可用於特定的連接埠,此連接埠由主機名稱 (或 IP 位址) 和連接埠號碼指定。您可以明確地指定服務的靜態連接埠號碼,或由代理程式的連接埠對映器動態指定。連接埠對映器本身常駐於代理程式的主連接埠上,即通常位於標準連接埠號碼 7676。(若有必要,您可以使用代理程式配置特性 imq.portmapper.port,以其他連接埠號碼來覆寫此值。) 依預設,每個連線服務皆會在啟動時對連接埠對映器進行自我註冊。當用戶端建立與代理程式的連線時,Message Queue 用戶端執行階段會先連絡連接埠對映器,以請求連接埠號碼供需要的連線服務使用。
此外,您也可以使用 imq.serviceName.protocolType.port 配置特性,覆寫連接埠對映器,並明確指定連線服務的靜態連接埠號碼 (其中 serviceName 與 protocolType 表示特定的連線服務,如表 4-1 所示)。(只有 jms、ssljms、admin 與 ssladmin 連線服務能夠以這種方式進行配置,httpjms 與 httpsjms 服務使用不同的配置特性,如附錄 C「HTTP/HTTPS 支援」 所述。) 但靜態連接埠通常只適用於特殊情況 (例如建立通過防火牆的連線),而不建議用於一般情況。
同時收到多個連接埠管理員請求時,請求會儲存在作業系統儲存區中等候執行動作。imq.portmapper.backlog 特性會針對這些位於儲存區中的請求,指定數量上限。超過此上限時,就會拒絕其他請求,直到儲存區量降低為止。
執行緒池管理
每個連線服務均為多重執行緒,支援多重連線。代理程式會針對每個服務,在個別的執行緒池中維護這些連線所需的執行緒。在連線需要執行緒時,這些執行緒就會新增到執行緒池中,供支援該連線的服務使用。
您所選擇的執行緒模型可指定執行緒是由單一連線所專用,還是由多個連線所共用:
代理程式的 imq.serviceName.threadpool_model 特性,可指定給定的連線服務應使用這兩種模型中的哪一種。此特性會採用下列兩個字串值之一:專屬或共用。若未明確設定特性,則會依預設採用專屬。
您也可以設定代理程式特性 imq.serviceName.min_threads 與 imq.serviceName.max_threads,來指定服務執行緒池的最小與最大執行緒數。當可用的執行緒數超過指定的最小臨界值時,Message Queue 將會在執行緒成為可用狀態時加以關閉,直到再次達到最小值為止,藉以節省記憶體資源。在負載較大的情況下,執行緒的數量會增加,直至達到執行緒池的最大數量為止;此時會拒絕新的連線,直到某執行緒成為可用狀態為止。
共用執行緒模性會使用分散執行緒,將執行緒指定給使用中的連線。代理程式特性 imq.shared.connectionMonitor_limit 可指定由單一分散執行緒監視的最大連線數。此特性的值越小,執行緒指定給連線的速度就越快。imq.ping.interval 特性會指定一個以秒為單位的時間間隔,讓代理程式依此間隔定期測試 (「偵測」) 連線,以驗證它是否仍在使用中,以便在嘗試傳輸訊息失敗前,即可預先偵測到連線失敗。
路由服務
用戶端連線至代理程式後,即可路由訊息及傳送訊息。在此階段中,代理程式必須建立及管理不同類型的實體目標,以確保訊息能順利傳送並有效利用資源。您可以使用路由特性所述的代理程式配置特性,以根據應用程式需要的方式管理這些工作。
代理程式的效能和穩定性取決於如記憶體之類的可用系統資源,以及如何有效利用這類資源。您可以設定配置特性,以防止代理程式被大量內送訊息佔用,或防止記憶體不足。這些特性可在三個不同的層級上起作用,以確保訊息服務在資源不足的情況下仍可運作:
- 整個系統的訊息限制完全適用於系統上所有的實體目標。其中包括代理程式保留訊息的數量上限 (imq.system.max_count),以及此類訊息所佔用的位元組總數上限 (imq.system.max_size)。若達到其中一項限制,代理程式就會拒絕任何新的訊息,直到擱置的訊息低於該限制為止。此外對個別訊息的大小上限 (imq.message.max_size) 與收回過期訊息的時間間隔 (imq.message.expiration.interval) 方面,也有相關的限制。
- 個別目標限制會針對傳送到特定實體目標的訊息制定流程。控制這些限制的配置特性在第 15 章「實體目標特性參照」中有所說明。這些限制包括:目標所能保留的訊息數量與大小、所能建立的訊息產生者與用戶的數量,以及可納入相同批次傳送到目標的訊息數量等等。
目標可配置為透過下列方式回應記憶體限制:減緩訊息產生者傳送訊息的速度、拒絕新的內送訊息,或丟棄最舊或優先順序最低的現有訊息。以這種方式從目標中刪除的訊息,可選擇性地移至停用訊息佇列中,而不會直接捨棄,代理程式特性 imq.destination.DMQ.truncateBody 可控制是整個訊息內文還是只有標頭與特性資料儲存在停用訊息佇列中。
為了在開發及測試應用程式時方便作業,您可以配置訊息代理程式,使其在訊息產生者或用戶嘗試存取不存在的目標時,自動建立新的實體目標。表 14-3 中所摘要的代理程式特性與剛剛說明的特性相同,但適用於自動建立的目標,而非管理員所建立的目標。
用以定義這些層級的記憶體用量百分比,分別由代理程式特性 imq.green.threshold、imq.yellow.threshold、imq.orange.threshold 與 imq.red.threshold 所指定,預設值為綠色 0%、黃色 80%、橙色 90%、紅色 98%。
記憶體用量進入下一層級時,代理程式即會隨之作出回應,首先將訊息由使用中記憶體移出至永久存放區,然後減少非永久性訊息的產生者,最後停止訊息傳入代理程式中。(上述兩種方法皆會降低代理程式效能。) 若要減少訊息產生,必須限制每個傳送到訊息數的批次大小 (由 imq.resourceState.count 特性所指定,其中 resourceState 分別為綠色、黃色、橙色或紅色)。
永久性服務
如果代理程式要在失敗時回復,則此代理程式需要重新建立其訊息傳送作業的狀態。若要執行此作業,代理程式必須將狀態資訊儲存到永久存放區。代理程式重新啟動時,它會使用儲存的資料來重新建立目標和長期訂閱、回復永久性訊息、回復開啟的作業事件,以及為未傳送的訊息重新建立其路由表格。然後,可以繼續訊息遞送。
Message Queue 支援檔案型與 JDBC 型的永久性模組 (請參閱圖 4-1)。檔案型的永久性會使用個別的檔案來儲存永久性資料,而 JDBC 型的永久性則使用 Java 資料庫連線 (JDBC�) 介面,將代理程式連線至與 JDBC 相容的資料存放區。雖然檔案型的永久性速度通常比 JDBC 型的更快,但有些使用者還是偏好 JDBC 相容存放區提供的備援功能與管理控制功能。代理程式配置特性 imq.persist.store (請參閱表 14-4) 可指定兩種形式的可用永久性。
圖 4-1 永久性資料存放區
檔案型永久性
依預設,Message Queue會使用檔案型永久資料存放區,其中的個別檔案會儲存如訊息、目標、長期訂閱與永久性資料等。與檔案型永久性相關的代理程式配置特性,會在檔案型永久性 中列出。
檔案型存放區位於以資料存放區所屬之代理程式實例 (instanceName) 作為辨識依據的目錄中:
.../instances/instanceName/fs350/
(請參閱附錄 A「Message Queue 資料的平台特定位置」,以瞭解實例目錄的所在位置。) 代理程式上的每個目標,都會將其保留訊息的子目錄傳送到該目標上。
備註
由於永久存放區可能包含敏感或專有訊息,因此您應保護 .../instances/instanceName/fs350/ 目錄,以防止未經授權的存取,請參閱保護永久性資料。
所有非訊息的永久性資料,都儲存於個別檔案中:其中一個檔案用於儲存目標、一個檔案用於儲存長期訂閱,一個檔案用於儲存作業事件狀態資訊。大部分訊息會儲存在由變數型記錄組成的單一檔案中。您可以壓縮此檔案,以便減少新增或移除訊息時的分段程序 (請參閱壓縮實體目標)。此外,超過特定臨界值大小的訊息會儲存於自身的個別檔案中,而非儲存於變數型記錄檔案。您可以使用代理程式特性 imq.persist.file.message.max_record_size 配置此臨界值大小。
代理程式會為這些個別訊息檔案保留檔案池:檔案不再使用時,不會被直接刪除,而會傳回其目標目錄的可用檔案池中,以供日後其他訊息重複使用。代理程式特性 imq.persist.file.destination.message.filepool.limit 可指定池中的最大檔案數。當目標中的個別訊息檔案數超過此限制時,若檔案已不需使用,就會直接被刪除,而不會傳回池中。
將檔案傳回檔案池時,代理程式可直接將檔案標示為可供重複使用,而不需刪除其先前的內容,這樣做可節省時間,但會耗用儲存空間。您可以使用 imq.persist.file.message.filepool.cleanratio 代理程式特性,指定每個目標的檔案池中有多少百分比的檔案應保持為清除 (空白) 狀態,而非直接標示為可供重複使用的狀態。此值設得越高,檔案池所需的空間就越少,但在檔案傳回池後,則需要較多的系統資源來清除檔案的內容。若代理程式的 imq.persist.file.message.cleanup 特性為 true,則池中所有的檔案就會在代理程式關閉時被清空,而成為清除狀態;如此將可節省儲存空間,但會減緩關閉程序的速度。
作業系統將資料寫入永久存放區時,可選擇應以同步還是延遲 (非同步) 的方式寫入資料。在系統當機的情況下,若代理程式認為資料已寫入永久存放區,但事實上並非如此時,延遲儲存就可能導致資料遺失。為確保完全的可靠性 (必須犧牲效能),您可以將代理程式特性 imq.persist.file.sync.enabled 設為 true,使所有資料皆以同步方式寫入。如此一來,當系統從當機狀態回復時將必定會有可用的資料,讓代理程式能可靠地繼續執行作業。但請注意,雖然資料並未遺失,但叢集內的任何其他代理程式無法使用這些資料,因為叢集代理程式此時並未共用資料。
JDBC 型永久性
您也可以不使用檔案型永久性,而設定代理程式透過與 JDBC 相容的驅動程式存取任何可存取的資料存放區。其中包含設定適當的 JDBC 相關代理程式配置特性,以及使用資料庫管理員公用程式 (imqdbmgr),建立具有適當模式的資料庫。如需特定資訊,請參閱配置 JDBC 型存放區。
配置代理程式使用 JDBC 資料庫的特性,列於 JDBC 型永久性 中。您可以透過以下方式指定這些特性:使用每個代理程式實例的實例配置檔 (config.properties),或者使用代理程式公用程式 (imqbrokerd) 或資料庫管理員公用程式 (imqdbmgr) 的 -D 指令行選項。
imq.persist.jdbc.driver 特性可提供在連線資料庫時要使用的 JDBC 驅動程式之 Java 類別名稱。另外,其他特性亦可指定下列作業所需的 URL:連線至現有的資料庫 (imq.persist.jdbc.opendburl)、建立新資料庫 (imq.persist.jdbc.createdburl) 以及關閉資料庫連線 (imq.persist.jdbc.closedburl)。
imq.persist.jdbc.user 與 imq.persist.jdbc.password 特性,可提供存取資料庫所需的使用者名稱與密碼;imq.persist.jdbc.needpassword 是指定是否需要密碼的布林值旗標。基於安全理由,密碼僅能在透過 -passfile 指令行選項所指定的密碼檔案中;若未指定此密碼檔案,imqbrokerd 與 imqdbmgr 指令就會以互動方式提示使用者提供密碼。同樣地,使用者名稱也可以從指令行上透過 imqbrokerd 指令的 -dbuser 選項,或 imqdbmgr 的 -u 選項提供。
由多個代理程式實例共用的 JDBC 資料庫中,配置特性 imq.persist.jdbc.brokerid 可為每個實例指定唯一的實例識別碼,以附加到資料庫表格的名稱中。(由於內嵌式資料庫僅為一個代理程式實例儲存資料,因此通常不需要此屬性。) 其餘與 JDBC 相關的配置特性,可用以自訂建立資料庫模式的 SQL 程式碼,每個資料庫表格各有一個適用的特性。例如,imq.persist.jdbc.table.IMQSV35 特性提供的 SQL 指令可用以建立版本表格;imq.persist.jdbc.table.IMQCCREC35 可用於建立配置變更記錄表格;imq.persist.jdbc.table.IMQDEST35 則用於建立目標表格,依此類推。請參閱表 14-6 以取得完整清單。
安全性服務
Message Queue 可提供使用者存取控制 (認證與授權) 與加密所需的安全性服務:
身為 Message Queue 管理員,您必須負責設定代理程式進行使用者認證及使用者授權作業時所需的資訊。與安全性服務相關的代理程式特性,列於安全性特性中。布林值特性 imq.accesscontrol.enabled 的角色為主要參數,可控制存取控制是否套用於整個代理程式中;若要進一步控制,您可以為特定的連線服務覆寫此設定,只要設定 imq.serviceName.accesscontrol.enabled 特性即可,其中 serviceName 是連線服務的名稱,如表 4-1 所示:例如 imq.httpjms.accesscontrol.enabled。
圖 4-2 顯示代理程式提供認證與授權服務時所需的元件。這些服務取決於包含訊息傳送系統使用者相關資訊的使用者儲存庫:其名稱、密碼與群組成員身份。此外,若要為使用者或群組的特定作業授權,代理程式必須查詢存取控制特性檔案,因為此檔案指定了使用者或群組可執行的作業。您可以使用配置特性 imq.accesscontrol.file.filename,為整個代理程式指定單一存取控制特性檔案,也可以使用 imq.serviceName.accesscontrol.file.filename,為單一連線服務進行指定。
圖 4-2 安全性支援
如圖 4-2 所示,您可以將使用者資料儲存在隨附於 Message Queue 服務的平面檔案使用者儲存庫中,也可以插入預先存在的簡易資料存取協定 (LDAP) 儲存庫:
代理程式的 imq.authentication.basic.user_repository 特性,可指定要使用的儲存庫類型。一般而言,若延伸性是主要考量,或者儲存庫需要由不同的代理程式共用 (例如,您使用的是代理程式叢集),則使用 LDAP 儲存庫是不錯的選擇。如需設定平面檔案或 LDAP 使用者儲存庫的相關資訊,請參閱認證使用者。
認證
請求連線至代理程式的用戶端必須提供使用者名稱與密碼,供代理程式將其與使用者儲存庫中儲存的資料進行比較。從用戶端傳輸到代理程式的密碼,會以基本 64 編碼 (適用於平面檔案儲存庫) 或訊息摘要 (MD5) 雜湊 (適用於 LDAP 儲存庫) 進行編碼。選擇哪一種編碼方式由代理程式的 imq.authentication.type 特性整體控制,或由 imq.serviceName. authentication.type 針對特定連線服務加以控制。imq.authentication.client.response.timeout 特性會設定認證請求的逾時間隔。
如使用密碼檔案所述,您可以選擇將密碼存入密碼檔案中,而不需以互動方式提示您提供密碼。布林值代理程式特性 imq.passfile.enabled 可控制此選項。若此特性為 true,則 imq.passfile.dirpath 與 imq.passfile.name 特性就會提供密碼檔案的目錄路徑與檔案名稱。imq.imqcmd.password 特性 (可內嵌於密碼檔案中) 可指定管理使用者在使用指令公用程式 (imqcmd) 管理代理程式、連線服務、連線、實體目標、長期訂閱與作業事件前,所使用的認證密碼。
若您使用 LDAP 型使用者儲存庫,則會有全部的代理程式特性可供您配置各方面的 LDAP 查詢。LDAP 伺服器本身的位址 (主機名稱與連接埠號碼) 由 imq.user_repository.ldap.server 所指定。imq.user_repository.ldap.principal 特性會提供連結到 LDAP 儲存庫所需的識別名稱,而 imq.user_repository.ldap.password 則會提供相關的密碼。其他特性會指定個別使用者與群組搜尋的目錄基底與選用 JNDI 篩選器,以及使用者和群組名稱的提供者特定屬性識別碼等等;請參閱安全性特性 以瞭解詳細資訊。
授權
經過認證後,使用者即有權執行各項 Message Queue 的相關活動。身為Message Queue管理員,您可以定義使用者群組,並指定其個別的使用者成員身份。預設存取控制特性檔案會明確參考一個群組 admin (請參閱群組)。此群組中的使用者具有 admin 連線服務的連線權限,此權限可讓使用者執行管理功能,如建立目標、監視及控制代理程式。依預設,您定義的任何其他群組中的使用者,均無法取得 admin 服務連線。
當使用者嘗試執行作業時,代理程式會檢查使用者名稱和群組成員身份 (從使用者儲存庫),是否與為存取此作業所指定的那些名稱和成員身份 (在存取控制特性檔案中) 相符。存取控制特性檔案可指定使用者或群組執行下列作業時的權限:
加密
若要對在用戶端與代理程式之間傳送的訊息加密,需要使用安全套接層 (SSL) 型標準的連線服務。透過在已啟用 SSL 的代理程式與用戶端之間建立加密的連線,SSL 可提供連線層級的安全性。
若要使用 SSL 型的 Message Queue 連線服務,您必須使用金鑰工具公用程式 (imqkeytool),產生成對的私密金鑰/公開金鑰。此公用程式會將公開金鑰內嵌於自身簽名的憑證中,並放置在 Message Queue 金鑰存放區中。金鑰存放區本身受密碼保護,若要解除鎖定,您必須提供在啟動時提供的金碼存放區密碼,此密碼由 imq.keystore.password 特性所指定。一旦金鑰存放區解除鎖定,代理程式即可將憑證傳送至請求連線的任何用戶端。然後,用戶端即可使用此憑證設定與代理程式的加密連線。
imq.audit.enabled 代理程式特性可控制記錄到 Message Queue 代理程式記錄檔中的稽核記錄;如需相關資訊,請參閱建立稽核記錄。
監視服務
代理程式包含可監視及診斷應用程式與代理程式效能的元件。這些元件包括:
圖 4-3 中會說明一般方案。用以配置及監視服務的代理程式特性,列於檢視特性中。
圖 4-3 監視支援
度量產生器
度量產生器可提供代理程式活動的相關資訊,例如傳入和傳出代理程式的訊息流量、代理程式記憶體中的訊息數量和使用的記憶體、開啟連線的數量,以及使用的執行緒數量。布林值代理程式特性 imq.metrics.enabled 可控制是否記錄此類資訊;imq.metrics.interval 則指定其頻率。
記錄程式
記錄程式會擷取代理程式程式碼與度量產生器所產生的資訊,並將此資訊寫入標準輸出 (主控台)、記錄檔;若在 Solaris 平台上,在發生錯誤時則會寫入 syslog 常駐程式程序。要使用的記錄檔由 imq.log.file.dirpath 與 imq.log.file.filename 代理程式特性識別;imq.log.console.stream 會指定主控台輸出應導向 stdout 還是導向 stderr。
imq.log.level 特性可控制記錄程式所收集的度量資訊種類:ERROR、WARNING 或 INFO。每個層級都會包含更高的層級,因此,若您指定 WARNING 作為記錄層級,則也會記錄錯誤訊息。imq.log.console.output 與 imq.log.file.output 特性分別會控制哪些指定的種類會寫入主控台與記錄檔。但在此情況下,種類不包含比自身更高的層級;例如,如果要將錯誤與警告寫入記錄檔,且將參考訊息寫入主控台時,必須明確將 imq.log.file.output 設為 ERROR|WARNING,將 imq.log.console.output 設為 INFO。在 Solaris 平台上有另一個特性 imq.log.syslog.output,可指定要寫入 syslog 常駐程式的度量資訊種類。另外還有 imq.destination.logDeadMsgs 特性,可指定在停用訊息被捨棄或移至停用訊息佇列時,是否要加以記錄。
在記錄檔中,您可以指定何時關閉檔案並將輸出自動重建至新檔案。一旦記錄檔達到指定的大小 (imq.log.file.rolloverbytes) 或存在時間 (imq.log.file.rolloversecs),就會將其儲存並建立新的記錄檔。
請參閱檢視特性,以瞭解與記錄有關的其他代理程式特性,並參閱配置及使用代理程式記錄功能,以進一步瞭解如何配置記錄程式,以及如何利用記錄程式取得效能資訊。
度量資訊產生者 (Enterprise Edition)
度量訊息產生者會在固定時間間隔,從度量產生器接收資訊,並將該資訊寫入度量訊息,然後根據訊息中包含的度量資訊類型,將訊息傳送到眾多度量主題目標之一 (請參閱表 4-2)。訂閱這些度量主題目標的 Message Queue 用戶端,可以使用這些訊息並處理訊息所包含的度量資料。這允許開發者建立自訂監視工具以支援訊息傳送應用程式。如需每個度量訊息類型中所報告之度量數量詳細資訊,請參閱「Message Queue Developer's Guide for Java Clients」。
代理程式特性 imq.metrics.topic.enabled 與 imq.metrics.topic.interval,可分別控制訊息是否要傳送到度量主題目標及其頻率。imq.metrics.topic.timetolive 與 imq.metrics.topic.persist 特性可指定此類訊息的有效期及其是否具有永久性。
除了度量訊息內文包含的資訊外,每個訊息標頭還包括提供下列資訊的特性:
這些特性對處理不同類型或不同代理程式的度量訊息之用戶端應用程式十分有用。
設定代理程式特性您可以使用下列兩種方法之一來指定代理程式的配置特性:
以下兩節將說明這兩種配置代理程式的方法。
配置檔案
代理程式配置檔含有配置代理程式所需的特性設定。這些設定會根據您所使用的作業系統平台存放在適當的目錄中;請參閱附錄 A「Message Queue 資料的平台特定位置」,以瞭解詳細資訊。此目錄儲存以下檔案:
此外,各個代理程式實例也有其本身的實例配置檔案,如下所述。如果您連線叢集中的代理程式實例,可能還需要使用叢集配置檔案以指定叢集配置資訊;如需相關資訊,請參閱叢集配置特性。
啟動時,代理程式會合併不同配置檔案中的特性值。如圖 4-4 所示,這些檔案會形成一個階層,實例配置檔案的指定值會在其中覆寫安裝配置檔案中的指定值,然後再覆寫預設配置檔案中的指定值。在階層頂端,您可以手動覆寫任何在配置檔案中指定的特性值,只要使用 imqbrokerd 指令的指令行選項即可。
圖 4-4 代理程式配置檔案
編輯實例配置檔案
首次執行代理程式時,會建立一個含有該代理程式實例之配置特性的實例配置檔案。此實例配置檔案名為 config.properties,儲存在以其所屬之代理程式實例名稱所識別的目錄中:
(請參閱附錄 A「Message Queue 資料的平台特定位置」,以瞭解 instances 目錄的位置。) 若該檔案不存在,您必須在啟動代理程式時使用 -name 選項 (請參閱代理程式公用程式),指定可供 Message Queue 建立檔案的實例名稱。
實例配置檔案由代理程式實例所維護,並會在您使用 Message Queue 管理公用程式變更配置時進行修改。您也可以手動編輯實例配置檔案,以自訂代理程式的運作方式與資源使用。若要執行此動作,您必須是 instances/instanceName 目錄的擁有者,或以 root 的身份登入,以變更目錄的存取權限。
代理程式只能在啟動時讀取其實例配置檔案。若要對代理程式的配置進行永久性的變更,必須先關閉代理程式並編輯檔案,然後再重新啟動代理程式。該檔案 (或任何配置檔案) 中的特性定義會使用下列語法:
例如,以下項目指定拒絕其他訊息前,代理程式會在記憶體和永久存放區中最多保留 50,000 個訊息。
以下項目指定每天 (86,400 秒) 會建立一個新的記錄檔:
請參閱代理程式服務與第 14 章「代理程式特性參照」,以瞭解可用代理程式配置特性及其預設值的相關資訊。
從指令行設定配置選項
您可以在啟動代理程式時或啟動之後,在指令行上輸入代理程式配置選項。
啟動時,可以使用代理程式公用程式 imqbrokerd 來啟動代理程式實例。指令的 -D 選項,可用以指定任何代理程式配置特性及其值;如需相關資訊,請參閱啟動代理程式與代理程式公用程式。如果您使用服務管理員公用程式 (imqsvcadmin) 將代理程式啟動為 Windows 服務,則 -args 選項可用來指定啟動配置特性;請參閱服務管理員公用程式。
執行代理程式實例時,您也可以變更某些代理程式特性。若要修改執行中代理程式的配置,可以使用指令公用程式的 imqcmd update bkr 指令;請參閱更新代理程式特性與代理程式管理。
配置永久資料存放區代理程式的永久資料存放區中含有實體目標、長期訂閱、訊息、作業事件與確認等項目的相關資訊。Message Queue 代理程式預設會使用檔案型永久存放區,但您可以重新配置,以插入任何可透過 JDBC 相容驅動程式加以存取的資料存放區。代理程式配置特性 imq.persist.store (請參閱表 14-4) 可指定兩種形式的可用永久性。
本節將說明如何設定代理程式使用永久存放區。它包括以下主題:
配置檔案型存放區
建立代理程式實例時,會自動建立檔案型資料存放區。此存放區位於代理程式的實例目錄中;請參閱附錄 A「Message Queue 資料的平台特定位置」,以瞭解確切位置。
依預設,Message Queue 會非同步寫入作業至磁碟。作業系統可以緩衝這些作業,以提供更好的效能。但是,如果寫入作業期間發生意外的系統失敗,則訊息可能會遺失。若要增強可靠性 (必須犧牲效能),您可以設定代理程式特性 imq.persist.file.sync,改為以同步方式以寫入資料。如需此特性的詳細討論,請參閱檔案型永久性與表 14-5。
啟動代理程式實例時,可以使用 imqbrokerd 指令的 -reset 選項來清除檔案系統存放區。如需此選項及其子選項的更多資訊,請參閱代理程式公用程式。
配置 JDBC 型存放區
若要配置代理程式使用 JDBC 型永久性,請在代理程式實例配置檔案中設定與 JDBC 相關的特性,並且建立適當的資料庫模式。Message Queue 資料庫管理員公用程式 (imqdbmgr) 使用 JDBC 驅動程式和代理程式配置特性來建立及管理資料庫。也可以使用資料庫管理員從資料庫中刪除這些毀壞的表格,或使用其他資料庫作為資料存放區。請參閱資料庫管理員公用程式,以獲得更多資訊。
備註
Oracle 和 PointBase 資料庫產品有配置範例可供使用。這些檔案的位置視平台而異,在附錄 A「Message Queue 資料的平台特定位置」相關表格的「範例應用程式與配置」中會有列出。此外,PointBase 內嵌版本、PointBase 伺服器版本與 Oracle 的範例,會在實例配置檔案 config.properties 中以註解值的形式提供。
配置 JDBC 型資料存放區
- 在代理程式的配置檔案中設定與 JDBC 相關的特性。
相關特性在 JDBC 型永久性中討論,並在表 14-6 中列出。特別是,您必須將代理程式的 imq.persist.store 特性設為 jdbc (請參閱表 14-4)。
- 將 JDBC 驅動程式 .jar 檔案的副本或符號連結放入下列位置:
/usr/share/lib/imq/ext/ (Solaris)
/opt/sun/mq/share/lib/ (Linux)
IMQ_VARHOME\lib\ext (Windows)例如,若您要在 Solaris 系統上使用 PointBase,下列指令就會將驅動程式的 .jar 檔案複製到適當的位置上:
% cp j2eeSDKInstallDirectory/pointbase/lib/pointbase.jar /usr/share/lib/imq/ext
下列指令則會建立符號連結:
% ln -s j2eeSDKInstallDirectory/lib/pointbase/pointbase.jar /usr/share/lib/imq/ext
- 建立 Message Queue 永久性所需的資料庫模式。
使用 imqdbmgr create all 指令 (針對內嵌式資料庫) 或 imqdbmgr create tbl 指令 (針對外部資料庫);請參閱資料庫管理員公用程式。
保護永久性資料
永久存放區可以包含暫時儲存的訊息檔案和其他資訊。由於這些訊息可能包含專用資訊,請務必保護資料存放區,以防止未經授權的存取。本節將說明如何確保檔案型或 JDBC 型之資料存放區的資料安全。
保護檔案型存放區
使用檔案型永久性的代理程式,會將永久性資料寫入平面檔案資料存放區中,而此存放區的位置會隨平台而有所不同 (請參閱附錄 A「Message Queue 資料的平台特定位置」):
instanceName 是辨別代理程式實例的名稱。
instanceName/fs350/ 目錄會在代理程式實例首次啟動時建立。保護此目錄的程序取決於執行代理程式所在的作業系統平台:
保護 JDBC 型存放區
使用 JDBC 型永久性的代理程式,會將永久性資料寫入與 JDBC 相容的資料庫中。對於由資料庫伺服器所管理的資料庫 (例如 Oracle),建議您建立使用者名稱和密碼,以存取 Message Queue 資料庫表格 (表格名稱以 IMQ 開頭)。如果資料庫不允許保護個別表格,請建立僅由 Message Queue 代理程式使用的專用資料庫。請參閱資料庫供應商提供的文件,以取得如何建立使用者名稱/密碼存取的相關資訊。
代理程式開啟資料庫連線所需的使用者名稱和密碼,可以提供為代理程式配置特性。但若在啟動代理程式時將其提供作為指令行選項,則有更高的安全性,方法是使用 imqbrokerd 指令的 -dbuser 與 -dbpassword 選項 (請參閱代理程式公用程式)。
對於代理程式透過資料庫的 JDBC 驅動程式直接存取的內嵌式資料庫,通常是透過設定檔案在儲存永久性資料的目錄上的權限來確保此資料庫的安全,保護檔案型存放區中會有詳細說明。但是為確保代理程式和資料庫管理員公用程式都能讀取和寫入該資料庫,兩者應該由同一位使用者執行。