已增加符合 Java Management Extensions (JMX) 規格,且可用於配置與監視 Message Queue 代理程式的新 API。您可以使用此 API,從 Message Queue 用戶端應用程式內以程式化方式配置並監視代理程式功能。在 Message Queue 的早期版本中,這些功能只能從指令行或管理主控台存取。
API 包含一組 JMX 受管理 Bean (MBean),以用於管理下列與 Message Queue 相關的資源:
訊息代理程式
連線服務
連線
目標
訊息產生器
訊息用戶
作業事件
代理程式叢集
記錄
Java 虛擬機器 (JVM)
這些 MBean 提供一些屬性和作業,以同步輪詢與處理基礎資源的狀態,並提供通知,以允許用戶端應用程式以非同步方式偵聽並回應狀態變更。用戶端應用程式可使用 JMX API,執行如下的配置與監視作業:
設定代理程式的連接埠號
設定代理程式的最大訊息容量
暫停連線服務
設定連線服務的最大執行緒數目
取得目前服務中的連線數目
銷毀連線
建立目標
銷毀目標
啟用或停用自動建立目標
清除所有來自目標的訊息
取得自啟動代理程式以來,目標所接收的訊息累積數目
取得佇列的目前狀態 (執行中或已暫停)
取得主題目前的訊息產生器數目
清除所有來自長期用戶的訊息
取得目前 JVM 堆疊大小
如需有關 JMX API 的簡介以及完整參考資訊,請參閱「Sun Java System Message Queue 4.1 Developer’s Guide for JMX Clients」。
增加了數個新的代理程式特性以支援 JMX API (請參閱表 1–3)。您無法使用 Message Queue 指令公用程式 (imqcmd) 從指令行設定這些特性;而是要使用代理程式公用程式 (imqbrokerd) 的 -D 選項設定,或是在代理程式的實例配置檔案 (config.properties) 中手動編輯。此外,其中的部分特性 (imq.jmx.rmiregistry.start、 imq.jmx.rmiregistry.use、 imq.jmx.rmiregistry.port) 可以透過表 1–4 中所述之新的代理程式公用程式選項進行設定。該表列出每個選項、指定其類型,並說明其用途。
表 1–3 JMX 支援功能的新代理程式特性
imq.jmx.connector.list 特性會定義一組在代理程式啟動時建立的已命名 JMX 連接器;imq.jmx.connector.activelist 會指定其中要啟動的連接器。每個已命名的連接器接著會有各自的特性集:
imq.jmx.connector.connectorName .urlpath |
imq.jmx.connector.connectorName .useSSL |
imq.jmx.connector.connectorName .brokerHostTrusted |
根據預設,會建立兩個 JMX 連接器,名為 jmxrmi 和 ssljmxrmi;第一個連接器會配置為不使用 SSL 加密 (imq.jmx.connector.jmxrmi.useSSL = false),第二個連接器則使用 (imq.jmx.connector.ssljmxrmi.useSSL = true)。根據預設,代理程式啟動時只會啟動 jmxrmi 連接器;請參閱JMX 用戶端的 SSL 支援,以取得有關如何啟動 ssljmxrmi 連接器進行安全通訊的資訊。
為方便使用,還在指令行代理程式公用程式 (imqbrokerd) 中增加了新的選項 (表 1–4),以控制 RMI 登錄的使用、啟動和連接埠。這些選項的用法和效果與其等效代理程式特性 (如表 1–3 中所述) 相同。該表列出每個選項、指定其等效代理程式特性,並說明其用法。
表 1–4 JMX 支援功能的新代理程式公用程式選項
選項 |
等效代理程式特性 |
說明 |
---|---|---|
-startRmiRegistry |
imq.jmx.rmiregistry.start |
指定是否在代理程式啟動時啟動 RMI 登錄。 |
-useRmiRegistry |
imq.jmx.rmiregistry.use |
指定是否使用外部 RMI 登錄。 |
-rmiRegistryPort |
imq.jmx.rmiregistry.port |
RMI 登錄的連接埠號 |
一個新的子指令 (表 1–5) 增加至指令行指令公用程式 (imqcmd),以列出在代理程式啟動時建立和啟動的 JMX 連接器之 JMX 服務 URL。JMX 用戶端若要不使用 Message Queue 簡易類別 AdminConnectionFactory 即取得其 JMX 連接器,就需要此資訊。此資訊也可用於透過 Java 監視與管理主控台 (jconsole) 等一般 JMX 瀏覽器,來管理與監視 Message Queue。
表 1–5 新指令公用程式子指令
子指令 |
說明 |
---|---|
list jmx |
列出 JMX 連接器的 JMX 服務 URL |
如上所述,預設會將 Message Queue 訊息代理程式配置為使用預先配置之 JMX 連接器 jmxrmi,進行不安全的通訊。應用程式若要使用安全傳輸層 (SSL) 進行安全通訊,則必須啟動另一個安全的 JMX 連接器 ssljmxrmi。此項作業需要下列步驟:
如「Message Queue Administration Guide」中所述,使用與 ssljms、ssladmin 或 cluster 連線服務相同的方式取得並安裝簽署的憑證。
視需要在信任清單存放區中安裝根憑證授權單位的憑證。
將 ssljmxrmi 連接器增加至要在代理程式啟動時啟動的 JMX 連接器清單:
imq.jmx.connector.activelist=jmxrmi,ssljmxrmi
使用 Message Queue 代理程式公用程式 (imqbrokerd) 啟動代理程式,然後傳遞密碼檔案中的金鑰庫密碼,或在提示時從指令行輸入。
根據預設,ssljmxrmi 連接器 (或任何其他基於 SSL 的連接器) 會配置為驗證所有提供給它的代理程式 SSL 憑證。若要避免此驗證 (例如,在軟體測試期間使用自我簽署的憑證時),請將代理程式特性 imq.jmx.connector.ssljmxrmi.brokerHostTrusted 設定為 true。
配置用戶端的管理員連線工廠 (AdminConnectionFactory) 時,內含的 URL 必須指定 ssljmxrmi 為喜好的連接器:
AdminConnectionFactory acf = new AdminConnectionFactory(); acf.setProperty(AdminConnectionConfiguration.imqAddress, "mq://myhost:7676/ssljmxrmi");
請視需要使用系統特性 javax.net.ssl.trustStore 和 javax.net.ssl.trustStorePassword,將 JMX 用戶端指向信任清單存放區。