![]() | |
Sun Java System Message Queue 3 2005Q1 管理指南 |
第 3 章
启动代理和客户机安装 Sun Java System Message Queue 后执行某些预备步骤后,即可启动代理和客户机。
本章包含以下小节:
代理实例的配置由一组配置文件和使用 imqbrokerd 命令传送的选项共同控制,这些选项会覆盖配置文件中相应的属性。有关代理配置的信息,请参见第 4 章“配置代理”。
准备系统资源在启动代理之前,需要执行两项系统级别的任务:同步系统时钟,并在 Solaris 或 Linux 上设置文件描述符限制。以下各节将介绍这些任务。
同步系统时钟
在启动任何代理或客户机之前,同步将要与 Message Queue 系统进行交互的所有主机的时钟至关重要。如果使用消息失效期 (TimeToLive),则同步尤为重要。来自未同步时钟的时间戳可能会使 TimeToLive 功能无法按预期方式工作,并且可能会阻止消息传送。同步对于代理群集同样至关重要。
对系统进行配置以运行时间同步协议,如简单网络时间协议 (Simple Network Time Protocol, SNTP)。通常,Solaris 和 Linux 系统中的 xntpd 守护程序以及 Windows 系统中的 W32Time 时间服务支持时间同步。有关配置此服务的信息,请参见操作系统文档。
在代理运行后,要避免向后设置系统时钟。
设置文件描述符限制(Solaris 或 Linux)
在 Solaris 和 Linux 平台上,客户机或代理在其中运行的 shell 对进程可以使用的文件描述符的数量进行了不严格的限制。在 Message Queue 系统中,客户机创建的每个连接,或代理接受的每个连接都使用其中一种文件描述符。每个具有持久性消息的物理目标也使用文件描述符。
因此,连接数由这些因素限制。如果不更改文件描述符限制,Solaris 上代理或客户机运行的连接不能超过 256 个,Linux 上不能超过 1024 个。(连接限制实际上要少一些,因为使用文件描述符可保持持久。)
要更改文件描述符限制,请参见 ulimit 手册页。此限制需在要执行客户机或代理的每个 shell 中更改。
以交互方式启动代理可以使用 imqbrokerd 命令,从命令行中以交互方式启动代理。(或者,也可以在 Windows 上从“开始”菜单启动代理。)不能使用管理控制台 (imqadmin) 或命令行实用程序 (imqcmd) 启动代理;代理必须已经运行,才能使用这些工具。
在 Solaris 和 Linux 平台中,代理实例必须始终由最初启动此实例的用户启动。第一次启动代理实例时,Message Queue 使用该用户的 umask 来设置包含配置信息和持久性数据的代理实例目录的权限。每个代理实例都有其自身的一组配置属性和基于文件的消息存储。
默认情况下,代理实例具有实例名 imqbroker。要在命令行中使用此名称和默认配置启动代理,只需使用命令
imqbrokerd
该命令启动本地计算机上名为 imqbroker 的代理实例,且端口映射器的默认端口是 7676。
要指定非默认实例名,请使用 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 命令的语法、子命令和选项的完整信息,请参见第 13 章“命令参考”。要了解此信息的简要概述,请输入命令
imqbrokerd -help
注
如果您拥有 Sun Java System Message Queue Platform Edition 许可证,则可使用 imqbrokerd 命令的 -license 选项来激活试用企业版许可证,它允许您试用企业版功能 90 天。指定 try 作为许可证名称:
imqbrokerd -license try
每次启动代理时都必须使用此选项,否则,代理将默认为标准平台版许可证。
自动启动代理您可以将代理设置为在系统启动时自动启动,而不是在命令行中显式启动它。具体操作方法取决于运行代理的平台(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 服务。在 Windows 系统上,可以在安装 Message Queue 时将代理作为服务进行安装。安装后,可以使用服务管理器实用程序 imqsvcadmin 执行下列操作:
有关 imqsvcadmin 命令的语法、子命令和选项的参考信息,请参见第 13 章“命令参考”。
将代理作为 Windows 服务安装意味着它将在系统启动时启动,并在后台运行直到系统关闭。因此,不要使用 imqbrokerd 命令启动代理,除非您希望启动其他实例。
要将启动选项传递给代理,请使用 imqsvcadmin 命令的 -args 参数。其工作方式与 imqbrokerd 命令的 -D 选项相同,如以交互方式启动代理中所述。照常使用 imqcmd 命令来控制代理操作。
将代理作为 Windows 服务运行时,任务管理器将该代理作为两个可执行进程列出。
系统只能有一个作为 Windows 服务运行的代理。
重新配置代理服务
重新配置 Windows 服务的顺序如下:
使用替代 Java 运行时
可以使用 -javahome 或 -jrehome 选项指定替代 Java 运行时的位置。(也可以在 Windows 服务控制面板的“启动参数”字段中指定这些选项。)
“启动参数”字段将反斜杠 (\) 视为转义符,因此,将它作为路径分界符时必须键入两次,例如:
-javahome d:\\jdk1.3。显示代理服务启动选项
要确定代理服务的启动选项,请使用 imqsvcadmin 命令的 query 选项。
服务启动问题疑难解答
如果试图启动服务时出现错误,您可以查看记录的错误事件。
查看记录的服务错误事件删除作为 Windows 服务运行的代理
要删除作为服务运行的代理,请执行以下操作之一:
完成后,重新启动计算机。
启动 Message Queue 客户机启动客户机应用程序之前,请向应用程序开发者了解有关如何设置系统的信息。如果要启动 Java 客户机应用程序,必须设置 CLASSPATH 变量并确保已安装了正确的 Jar 文件。Message Queue Developer's Guide for Java Clients 包含有关系统设置常规步骤的信息,但开发者可能会提供额外信息。
要启动 Java 客户机应用程序,请使用下列命令行格式:
java clientAppName
要启动 C 客户机应用程序,请使用应用程序开发者提供的格式。
应用程序开发者或应用程序文档应提供有关应用程序设置的属性值的信息。您可能希望覆盖应用程序设置的某些属性。可以通过在命令行中指定这些属性来完成此操作。
您可能还希望在命令行中为使用 JNDI 查找来查找其连接工厂的任何 Java 客户机指定属性。如果该查找返回的连接工厂比应用程序旧,则该连接工厂可能缺少对较新属性的支持。在这种情况下,Message Queue 将这些属性设置为默认值。通过在命令行中指定属性,可以将其设置为非默认值。
要在命令行中提供属性值,请对 Java 应用程序使用下列命令行语法:
java [[-Dattribute=value ]...] clientAppName
attribute 的值必须是连接工厂受管理对象属性,如第 16 章“受管理对象的属性参考”中所述;如果该值中包含空格,请在命令行的 attribute=value 部分的两端添加引号。
下列示例启动了客户机应用程序 MyMQClient。该应用程序连接的代理位于 OtherHost 主机(端口为 7677)中,它将覆盖应用程序所设置的任何主机名和端口。
java -DimqAddressList=mq://OherHost:7677/jms MyMQClient
在某些情况下,无法使用命令行来指定属性值。管理员可以将受管理对象设置为只允许读取访问,或者应用程序开发者也可以通过对客户机进行编码来实现此目的。与应用程序开发者进行沟通非常必要,这有助于了解启动客户机程序的最佳途径。
删除代理实例本节包含有关在 Solaris 或 Linux 中删除代理实例的信息。有关删除 Windows 服务的信息,请参见删除作为 Windows 服务运行的代理。
要删除代理实例,请使用 imqbrokerd 命令及 -remove 选项。用于删除代理实例的命令格式如下:
imqbrokerd [options..] -remove instance
例如,如果代理名为 myBroker,则此命令如下:
imqbrokerd -name myBroker -remove instance
此命令删除指定代理的整个实例目录。
有关可用来删除代理的选项列表,请参见命令参考中的 imqbrokerd 参考信息。
在 Solaris 或 Linux 中,如果将代理设置为在系统启动时自动启动,请编辑配置文件 /etc/imq/imqbrokerd.conf (Solaris) 或 /etc/opt/sun/mq/imqbrokerd.conf (Linux),并将 AUTOSTART 属性设置为 NO。