Sun Java System Message Queue 3.7 UR1 管理指南

第 3 章 啟動代理程式和用戶端

安裝 Sun Java SystemTM Message QueueTM 並執行一些基本準備步驟後,就可以開始啟動代理程式和用戶端。代理程式的配置由一組配置檔案所管理,可由傳送給代理程式公用程式 (imqbrokerd) 的指令行選項加以置換;如需更多資訊,請參閱第 4 章, 配置代理程式

本章包含下列各節:

準備系統資源

啟動代理程式之前,必須預先執行兩個系統層級的作業:同步化系統時鐘,以及 (在 Solaris 或 Linux 平台上) 設定檔案描述元限制。以下各節將描述這些作業。

同步化系統時鐘

啟動任何代理程式或用戶端之前,必須先將會與 Message Queue 系統互動的所有主機的時鐘同步化。如果您使用訊息過期設定 (即訊息有效存在的時間),則此項同步化尤為重要。不同步的時鐘時間標記,可能會讓訊息無法按預期那樣過期或無法傳送訊息。同步化對代理程式叢集也十分重要。

您應該將系統配置為執行時間同步化協定,例如簡易網路時間協定 (SNTP)。Solaris 和 Linux 的 xntpd 常駐程式和 Windows 的 W32Time 服務通常可支援時間同步化功能。(如需配置此服務的詳細資訊,請參閱作業系統的文件。)代理程式執行後,請避免將系統時鐘往回設定。

設定檔案描述元限制

在 Solaris 和 Linux 平台上,執行用戶端或代理程式所在的 Shell,會對程序可以使用的檔案描述元數目指定軟式限制。在 Message Queue 中,用戶端建立的每個連線或代理程式接受的每個連線,均使用這些檔案描述元的其中一項。每個擁有永久性訊息的實體目標皆使用一個檔案描述元。

因此,檔案描述元限制會限制代理程式或用戶端可擁有的連線數目。依預設,Solaris 上的最大連線數目為 256,而 Linux 上為 1024。(實際上,因為會持續使用檔案描述元,所以連線限制會低於上述數目。)如果需要超過此限制的連線數目,您必須在執行用戶端或代理程式的每個 Shell 中,提高檔案描述元限制。如需如何執行此作業的資訊,請參閱 ulimit 線上手冊。

啟動代理程式

您可以使用 Message Queue 指令行公用程式或 Windows [開始] 功能表,以互動方式啟動代理程式,或是安排在系統啟動時自動啟動代理程式。以下各節描述如何:

以互動方式啟動代理程式

您可以使用代理程式公用程式 (imqbrokerd),從指令行以互動方式啟動代理程式。(也可以從 Windows 的 [開始] 功能表,啟動代理程式。)您無法使用管理主控台 (imqadmin) 或指令公用程式 (imqcmd) 來啟動代理程式,因為必須先執行代理程式,才能使用這些工具。

在 Solaris 和 Linux 平台上,代理程式實例一律必須由最初啟動該實例的同一位使用者啟動。每個代理程式實例都有自己的配置特性和檔案式訊息存放區。初次啟動代理程式實例時,Message Queue 會使用該使用者的檔案建立模式遮罩 (umask),設定包含該代理程式實例配置資訊和永久性資料之目錄的權限。

代理程式實例的預設名稱是 imqbroker。您只要使用下列指令,即可從指令行以該名稱和預設配置來啟動代理程式

imqbrokerd

該指令會在本地機器上使用預設連接埠 7676 上的連接埠對映器,啟動代理程式實例 imqbroker (請參閱連接埠對映器)。

若要指定非預設的實例名稱,請在 imqbrokerd 指令上使用 -name 選項。下列指令啟動的代理程式實例名稱是 myBroker

imqbrokerd -name myBroker

您也可以在 imqbrokerd 指令行上使用其他選項來控制代理程式作業的各種狀況。下列範例使用 -tty 選項,向指令視窗傳送錯誤和警告 (標準輸出):

imqbrokerd -name myBroker -tty

您也可以在指令行上使用 -D 選項來置換代理程式實例配置檔案 (config.properties) 中指定的特性值。此範例設定 imq.jms.max_threads 特性,將 jms 連線服務可用的最大執行緒數目提高到 2000:

imqbrokerd -name myBroker -Dimq.jms.max_threads=2000

如需 imqbrokerd 指令的語法、子指令和選項的詳細資訊,請參閱代理程式公用程式。如需這項資訊的快速摘要,請輸入下列指令:

imqbrokerd -help

備註 –

如果您有 Sun Java System Message Queue Platform Edition 授權,則可以使用 imqbrokerd 指令的 -license 選項以啟動 Enterprise Edition 試用授權,試用 Enterprise Edition 功能 90 天。請指定授權名稱 try

imqbrokerd -license try

每次啟動代理程式時,都必須使用此選項,否則代理程式會預設為標準 Platform Edition 授權。


自動啟動代理程式

除了從指令行明確啟動代理程式之外,您也可以設定在系統啟動時自動啟動代理程式。執行此作業的方式,會因執行代理程式的平台 (Solaris、Linux 或 Windows) 而有所不同。

在 Solaris 和 Linux 上自動啟動

在 Solaris 和 Linux 系統上安裝 Message Queue 時,可啟用自動啟動作業的程序檔位於 /etc/rc* 樹狀目錄中。若要使用這些程序檔,您必須編輯配置檔案/etc/imq/imqbrokerd.conf (Solaris) 或 /etc/opt/sun/mq/imqbrokerd.conf (Linux),如下所示:

在 Windows 上自動啟動

若要在 Windows 系統啟動時自動啟動代理程式,您必須將代理程式定義為 Windows 服務。然後就會在系統啟動時啟動代理程式,並且在背景中執行到系統關機為止。因此,除非您要啟動其他實例,否則不必使用 imqbrokerd 指令啟動代理程式。

一個系統只能有一個代理程式當成 Windows 服務來執行。[工作管理員] 會將這類代理程式當作兩個可執行的程序列出:

在 Windows 系統上安裝 Message Queue 時,您可以將代理程式安裝為服務。安裝後,您可以使用服務管理員公用程式 (imqsvcadmin) 執行下列作業:

若要將啟動選項傳送給代理程式,可在 imqsvcadmin 指令中使用 -args 引數。它的作用等同於啟動代理程式中描述的 imqbrokerd 指令之 -D 選項。使用指令公用程式 (imqcmd) 以控制代理程式照常運作。

如需 imqsvcadmin 指令的語法、子指令和選項的完整資訊,請參閱服務管理員公用程式

重新配置代理程式服務

如要重新配置安裝為 Windows 服務的代理程式,程序如下:

Procedure重新配置當成 Windows 服務執行的代理程式

  1. 停止服務。

    1. 從 Windows [開始] 功能表的 [設定] 子功能表中,選擇 [控制台]。

    2. 開啟 [系統管理工具] 控制台。

    3. 選擇 [服務] 圖示以執行服務工具,然後從 [檔案] 功能表或快顯式環境功能表選擇 [開啟],或是直接連按兩下該圖示。

    4. 在 [服務 (本機)] 下方,選擇 [Message Queue Broker] 服務,然後從 [執行] 功能表中選擇 [內容]。

      或者,您可以在 [訊息佇列代理程式] 上按一下滑鼠右鍵,然後從快顯功能表中選擇 [內容],或直接連按兩下 [訊息佇列代理程式]。不論何種方式,都會出現 [訊息佇列代理程式特性] 對話方塊。

    5. 在 [內容] 對話方塊中的 [一般] 標籤下方,按一下 [停止] 即可停止代理程式服務。

  2. 移除服務。

    在指令行上輸入指令


    imqsvcadmin remove
  3. 重新安裝服務,使用 -args 選項指定不同的代理程式啟動選項,或使用 -vmargs 選項指定不同的 Java 版本引數。

    例如,若要將服務的主機名稱與連接埠號變更為 broker17878,可以使用以下指令


    imqsvcadmin install -args "-name broker1 -port 7878"

使用替代 Java 執行階段

您可以使用 imqsvcadmin 指令的 -javahome-jrehome 選項,指定替代 Java 執行階段的位置。(您也可以在服務的 [內容] 對話方塊視窗中,從 [一般] 標籤下方的 [啟動參數] 欄位,指定這些選項。)


備註 –

[啟動參數] 欄位會將反斜線字元 (\) 視為退出字元,因此當您以反斜線作為路徑區隔字元時,必須輸入兩次:例如:

-javahome c:\\j2sdk1.4.0

顯示代理程式服務啟動選項

若要決定代理程式服務的啟動選項,請在 imqsvcadmin 指令中使用 query 選項,如範例 3–1 所示。


範例 3–1 顯示代理程式服務啟動選項


imqsvcadmin query

Service Message Queue Broker is installed.
Display Name: Message Queue Broker
Start Type: Automatic
Binary location: C:\\Sun\\MessageQueue\\bin\\imqbrokersvc.exe
JavaHome: c:\\j2sdk1.4.0
Broker Args: -name broker1 -port 7878


服務啟動問題疑難排解

如果在啟動當成 Windows 服務的代理程式時出現錯誤,可以檢視記錄的錯誤事件:

Procedure查閱記錄的服務錯誤事件

  1. 開啟 Windows [系統管理工具] 控制台。

  2. 啟動 [事件檢視器] 工具。

  3. 選擇 [應用程式事件記錄檔]。

  4. 從 [執行] 功能表選擇 [重新整理],以顯示任何錯誤事件。

移除代理程式

移除代理程式的程序會因平台不同而異,將會在以下各節說明。

移除 Solaris 或 Linux 上的代理程式

若要移除 Solaris 或 Linux 平台上的代理程式實例,請在 imqbrokerd 指令中使用 -remove 選項。指令格式如下:

imqbrokerd [options…] -remove instance

例如,如果代理程式的名稱是 myBroker,則指令如下:

imqbrokerd -name myBroker -remove instance

此指令可刪除所指定代理程式的整個實例目錄。

如果代理程式設定為在系統啟動時自動啟動,請編輯配置檔案 /etc/imq/imqbrokerd.conf (Solaris) 或 /etc/opt/sun/mq/imqbrokerd.conf (Linux),將 AUTOSTART 特性設定為 NO

如需 imqbrokerd 指令的語法、子指令和選項的詳細資訊,請參閱代理程式公用程式。如需這項資訊的快速摘要,請輸入下列指令:

移除 Windows 上的代理程式服務

若要移除當成 Windows 服務執行的代理程式,請使用以下指令

imqcmd shutdown bkr

若要關閉代理程式,請在後面加上

imqsvcadmin remove

以移除服務。

您也可以透過 [系統管理工具] 控制台,使用 Windows [服務] 工具,以停止和移除代理程式服務。

請在移除代理程式服務之後,重新啟動您的電腦。

啟動用戶端

啟動用戶端應用程式之前,您必須先向應用程式開發者取得系統的設定資訊。如果您啟動 Java 用戶端應用程式,就必須正確設定 CLASSPATH 變數,並且確定已安裝正確的 .jar 檔案。「Message Queue Developer's Guide for Java Clients」中包含設定系統的一般步驟資訊,但是您的開發者可能會提供額外的資訊。

啟動 Java 用戶端應用程式時,請使用下列的指令行格式:

java clientAppName

若要啟動 C 用戶端應用程式,請使用應用程式開發者提供的格式。

應用程式的文件應會提供與應用程式設定的屬性值相關的資訊;您可能要從指令行置換部分屬性值。您也可能要為任何使用 Java Naming and Directory Interface (JNDI) 查找功能尋找連線工廠的 Java 用戶端,在指令行中指定屬性。如果查找功能傳回的連線工廠比應用程式還舊,表示連線工廠不支援較新的屬性。在這種情況下,Message Queue 會將這些屬性設為預設值;必要時,您可以使用指令行置換這些預設值。

若要從指令行指定 Java 應用程式的屬性值,請使用以下語法:

java [[-Dattribute=value]
] clientAppName

第 16 章, 受管理物件屬性參照所述,attribute 的值必須是連線工廠受管理物件屬性。如果該值中含有空格,請將指令行的 attribute= value 部分括在引號內。

以下範例會啟動名稱為 MyMQClient 的用戶端應用程式,利用連接埠 7677 連線至主機 OtherHost 上的代理程式:

java -DimqAddressList=mq://OtherHost:7677/jms MyMQClient

指令行中指定的主機名稱與連接埠,會置換應用程式本身的任何設定。

有時您無法使用指令行來指定屬性值。管理員可以將受管理物件設為只能讀取,或應用程式開發者能以程式碼讓用戶端應用程式執行此作業。若要瞭解啟動用戶端程式的最佳方法,最好與應用程式開發者溝通交流。