代理程式的永久性資料存放區中含有實體目標、長期訂閱、訊息、作業事件與確認等項目的相關資訊。Message Queue 代理程式的預設配置會使用檔案式永久性存放區,但您可以重新配置,以外掛可透過 JDBC 相容驅動程式加以存取的任何資料存放區。 代理程式配置特性 imq.persist.store (請參閱表 14–4) 可指定使用哪一種形式的永久性。
本節將說明如何設定代理程式使用永久性存放區。它包括以下主題:
建立代理程式實例時,會自動建立檔案式資料存放區。此存放區位於代理程式的實例目錄中;請參閱附錄 AMessage QueueTM 資料的特定平台位置,以瞭解確切位置。
依預設,Message Queue 會以非同步方式將作業寫入至磁碟。作業系統可以緩衝這些作業,以提供更好的效能。但是,如果寫入作業期間發生意外的系統失敗,則訊息可能會遺失。若要增強可靠性 (必須犧牲效能),您可以設定代理程式特性 imq.persist.file.sync,改為以同步方式寫入資料。如需此特性的詳細討論,請參閱檔案式永久性與表 14–5。
啟動代理程式實例時,可以使用 imqbrokerd 指令的 -reset 選項來清除檔案系統存放區。如需此選項及其子選項的更多資訊,請參閱代理程式公用程式。
若要配置讓代理程式使用 JDBC 型永久性,請在代理程式的實例配置檔案中設定與 JDBC 相關的特性,並且建立適當的資料庫模式。Message Queue 資料庫管理者公用程式 (imqdbmgr) 使用 JDBC 驅動程式和代理程式配置特性來建立及管理資料庫。也可以使用資料庫管理者從資料庫中刪除毀壞的表格,或使用其他資料庫作為資料存放區。如需更多資訊,請參閱資料庫管理者公用程式。
Oracle 和 PointBase 資料庫產品有範例配置可供使用。這些檔案的位置視平台而異,且已列在附錄 AMessage QueueTM 資料的特定平台位置 相關表格的「範例應用程式與配置」中。此外,PointBase 內嵌式版本、PointBase 伺服器版本與 Oracle 的範例,會在實例配置檔案 config.properties 中以註釋值的形式提供。
在代理程式的配置檔案中設定與 JDBC 相關的特性。
相關特性在JDBC 型永久性中討論並於表 14–6 中列出。特別是,您必須將代理程式 imq.persist.store 特性設為 jdbc (請參閱永久性特性)。
將 JDBC 驅動程式 .jar 檔案的副本或符號連結放入下列位置:
在 Solaris 上:
/usr/share/lib/imq/ext/ |
在 Linux 上:
/opt/sun/mq/share/lib/ |
在 Windows 上:
IMQ_VARHOME\\lib\\ext |
例如,若您要在 Solaris 系統上使用 PointBase,下列指令就會將驅動程式的 .jar 檔案複製到適當的位置上:
% cp j2eeSDKInstallDirectory/pointbase/lib/pointbase.jar /usr/share/lib/imq/ext |
下列指令則會建立符號連結:
% ln -s j2eeSDKID/lib/pointbase/pointbase.jar /usr/share/lib/imq/ext |
建立 Message Queue 永久性所需的資料庫模式。
使用 imqdbmgr create all 指令 (針對內嵌式資料庫) 或 imqdbmgr create tbl 指令 (針對外部資料庫);請參閱資料庫管理者公用程式。
變更 imqdbmgr 所在的目錄:
在 Solaris 上:
cd /usr/bin |
在 Linux 上:
cd /opt/sun/mq/bin |
在 Windows 上:
cd IMQ_HOME\\bin |
輸入 imqdbmgr 指令:
imqdbmgr create all
若使用內嵌式資料庫,最好在下列目錄中建立:
… /instances/ instanceName/dbstore/ databaseName
如果內嵌式資料庫沒有使用者名稱和密碼保護,則可能由檔案系統權限所保護。若要確保代理程式可讀取和寫入資料庫,則執行此代理程式的使用者應與使用 imqdbmgr 指令建立內嵌式資料庫的使用者相同。
永久性存放區可以包含暫時儲存的訊息檔案和其他資訊。由於這些訊息可能包含專用資訊,請務必保護資料存放區,以防止未經授權的存取。本節將說明如何確保檔案式或 JDBC 型資料存放區的資料安全。
使用檔案式永久性的代理程式,會將永久性資料寫入平面檔案資料存放區中,而此存放區的位置會隨平台而有所不同 (請參閱附錄 AMessage QueueTM 資料的特定平台位置):
…/instances/ instanceName/fs350/
其中,instanceName 是識別代理程式實例的名稱。
instanceName/fs350/ 目錄會在代理程式實例首次啟動時建立。保護此目錄的程序取決於執行代理程式所在的作業系統平台:
在 Solaris 與 Linux 上,目錄的權限取決於啟動代理程式實例之使用者的檔案模式建立遮罩 (umask)。因此,透過適當地設定遮罩,即可限制啟動代理程式實例和讀取其永久性檔案的權限。此外,管理員 (超級使用者) 可以透過將 instances 目錄的權限設定為 700,保護永久性資料。
在 Windows 上,目錄的權限可透過 Windows 作業系統所提供的機制來設定。這通常需要開啟目錄的 [內容] 對話方塊。
使用 JDBC 型永久性的代理程式,會將永久性資料寫入與 JDBC 相容的資料庫中。對於由資料庫伺服器所管理的資料庫 (例如 Oracle),建議您建立使用者名稱和密碼,以存取 Message Queue 資料庫表格 (表格名稱以 IMQ 開頭)。如果資料庫不允許保護個別表格,請建立僅由 Message Queue 代理程式使用的專用資料庫。請參閱資料庫供應商提供的文件,以取得如何建立使用者名稱及密碼存取的相關資訊。
代理程式開啟資料庫連線所需的使用者名稱和密碼,可透過代理程式配置特性來提供。但若在啟動代理程式時將其作為指令行選項提供,則有更高的安全性,方法是使用 imqbrokerd 指令的 -dbuser 與 -dbpassword 選項 (請參閱代理程式公用程式)。
對於代理程式透過資料庫的 JDBC 驅動程式直接存取的內嵌式資料庫,通常是透過設定檔案在儲存永久性資料的目錄上的權限來確保此資料庫的安全,保護檔案式存放區中會有詳細說明。但是為確保代理程式和資料庫管理者公用程式都能讀取和寫入該資料庫,兩者應該由同一位使用者執行。