Message Queue 4.0 是一个次要发行版,仅限于支持 Application Server 9 PE。它包含几个新增功能、一些增强功能以及错误修复程序。本部分包含此发行版中的新增功能的说明:
在版本 4.0 中进行了一些细微但可能会引起问题的更改,其中之一就是不再使用命令行选项来指定密码。因此,您必须按过时的密码选项中的所述将所有密码存储在一个文件中,或者在出现提示时输入密码。
Message Queue 4.0 中添加了一个符合 Java Management Extensions (JMX) 规范的新 API,用于配置和监视 Message Queue 代理。使用此 API,可以在 Java 应用程序中以编程方式来配置和监视代理函数。在 Message Queue 的早期版本中,只能从命令行管理实用程序或管理控制台访问这些函数。
有关详细信息,请参见《Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients》。
Message Queue 4.0 新增了对客户端在运行时记录连接以及会话相关事件的支持。
有关客户端运行时日志记录以及如何对其进行配置的信息,请参见 Java Dev Guide 的第 137 页。
Message Queue 4.0 新增了一个事件通知 API,它允许客户端运行时环境通知应用程序连接状态更改。连接事件通知允许 Message Queue 客户端侦听关闭和重新连接事件,并根据通知类型和连接状态采取适当的操作。例如,如果发生故障转移,并且客户端重新连接到了其他代理,则应用程序可能希望清除事务状态,并继续执行新事务。
有关连接事件以及如何创建事件侦听器的信息,请参见 Java Dev Guide 的第 96 页。
在 Message Queue 4.0 的命令实用程序 (imqcmd) 中添加了一个新的子命令和几个命令选项,以允许管理员停止代理、在指定时间间隔后关闭代理、销毁连接或设置 Java 系统属性(例如,与连接相关的属性)。
停止代理可使其进入静默状态,以便在关闭或重新启动代理之前处理完所有消息。无法对处于停止状态的代理创建新连接。要停止代理,请输入如下命令。
imqcmd quiesce bkr -b Wolfgang:1756
要在指定的时间间隔后关闭代理,请输入如下命令。(时间间隔指定了在代理关闭之前等待的秒数。)
imqcmd shutdown bkr -b Hastings:1066 -time 90
如果指定了时间间隔,代理将记录一条消息,指出何时关闭代理。例如,
Shutting down the broker in 29 seconds (29996 milliseconds)
当代理等待关闭时,可通过以下方式影响其行为。
继续接受管理 jms 连接。
不接受任何新 jms 连接。
现有 jms 连接将继续工作。
代理无法接管增强的代理群集中的任何其他代理。
imqcmd 实用程序不会阻止,它将向代理发送关闭请求并立即返回。
要销毁连接,请输入如下命令。
imqcmd destroy cxn -n 2691475382197166336
使用 imqcmd list cxn 或 imqcmd query cxn 命令可获取连接 ID。
要使用 imqcmd 设置系统属性,请使用新的 –D 选项。它适用于设置或覆盖 JMS 连接工厂属性或与连接相关的 java 系统属性。例如:
imqcmd list svc -secure -DimqSSLIsHostTrusted=true imqcmd list svc -secure -Djavax.net.ssl.trustStore=/tmp/mytruststore -Djavax.net.ssl.trustStorePassword=mytrustword
有关 imqcmd 命令语法的完整信息,请参见《Sun GlassFish Message Queue 4.4 Administration Guide》中的第 16 章 “Command Line Reference”。
Message Queue 4.0 的数据库管理器实用程序 imqdbmgr 中添加了一个新的 query 子命令。使用此子命令可显示有关基于 JDBC 的数据存储库的信息,其中包括数据库版本、数据库用户以及是否已创建数据库表。
以下是此命令所显示的信息的示例。
imqdbmgr query |
[04/Oct/2005:15:30:20 PDT] Using plugged-in persistent store: version=400 brokerid=Mozart1756 database connection url=jdbc:oracle:thin:@Xhome:1521:mqdb database user=scott Running in standalone mode. Database tables have already been created. |
Message Queue 4.0 现在支持将 Apache Derby 版本 10.1.1 作为基于 JDBC 的数据存储库提供者。
Message Queue 4.0 新增了对基于 JDBC 的数据存储库的更改,以便进行优化并支持以后的增强功能。为此,将基于 JDBC 的数据存储库格式提高到了版本 400。请注意,在 Message Queue 4.0 中,基于文件的数据存储库版本将保持为 370,因为没有对其进行任何更改。
Message Queue 4.0 添加了两个新属性,它们是在位于停用消息队列中的所有消息上设置的。
JMS_SUN_DMQ_PRODUCING_BROKER 指示生成消息时所在的代理。
JMS_SUN_DMQ_DEAD_BROKER 指示将消息标记为停用的代理。
从 Message Queue 4.0 开始,客户端连接工厂属性 imqSSLIsHostTrusted 的默认值为 false。如果应用程序依赖于以前的默认值 true,则需要对此属性进行重新配置,以将其明确设置为 true。
将代理配置为使用自签名证书时,您可以选择信任主机。在这种情况下,除了指定连接应使用基于 SSL 的连接服务(通过 imqConnectionType 属性)外,还应该将 imqSSLIsHostTrusted 属性设置为 true。
例如,要在代理使用自签名证书时安全地运行客户端应用程序,请使用如下命令。
java -DimqConnectionType=TLS -DimqSSLIsHostTrusted=true ClientAppName
要在代理使用自签名证书时安全地使用命令实用程序 (imqcmd) ,请使用如下命令(用于列出连接器服务)。
imqcmd list svc -secure -DimqSSLIsHostTrusted=true