以下各部分将介绍 Message Queue 3.7 UR1 的新增功能:
为了有效地简化产品的交付过程,我们已经将 Sun Java Message Queue 的 Platform Edition 和 Enterprise Edition 进行了合并。从 Message Queue 3.7 UR1 开始,只提供一个版本。该策略可有效排除独立发行版本的功能限制。希望此举能简化您对本产品的体验。
合并版本还可以让 Message Queue 更好地与 Solaris Enterprise System 配合使用,它提供了一种持久而广泛的权限,您无需支持、维护或进行任何功能补充,即可使用 Enterprise Edition 的功能。与早期发行版相同,我们提供了用于支持和维护服务的多种授权选项。Message Queue 仍将与 Java Enterprise System 和 Application Platform Suite 打包在一起。请查看在线商店(网址为 http://www.sun.com)或与销售代表联系,以找到最适合您的选项。下表描述了新单一版本的 Message Queue 的升级途径。
表 1–1 Message Queue 3.7 UR1 的升级途径
先前发行的版本 |
升级途径 |
注释 |
---|---|---|
Platform Edition |
Sun Java System Message Queue 3.7 UR1 |
现在这些用户可以使用所有功能。如果未购买许可证,则不提供任何支持选项。 |
Enterprise Edition |
Sun Java System Message Queue 3.7 UR1 |
功能未发生任何更改。提供了一定范围的授权和支持选项。 |
Platform Edition 支持合同 |
升级到 Enterprise Edition 支持合同 |
将继续续订先前发行的 Platform Edition 的现有支持合同。不会为先前发行的 Platform Edition 发布新的 Platform Edition 合同。 |
Enterprise Edition 支持合同 |
无更改。 |
继续续订现有合同。将会发布新的合同。 |
下表描述了各种 Message Queue 产品交付来源的更改。
表 1–2 Message Queue 产品交付来源的更改
产品 |
以前的交付来源 |
新的交付来源 |
注释 |
Message Queue |
不适用 |
Sun 下载中心产品页面 |
独立下载。仅支持社区。不提供支持合同。 |
Message Queue Platform Edition |
Sun 下载中心(通过 Message Queue 产品页面) |
不再提供 |
页面将全部指向单一版本的 Message Queue |
Message Queue Enterprise Edition 试用版(通过 Platform Edition) |
Sun 下载中心(通过 Message Queue 产品页面) |
不再需要试用版许可证 |
不再需要 |
Message Queue Enterprise Edition 90 天试用版(通过 Java Enterprise System 下载或 DVD) |
Java Enterprise System 下载中心,早于版本 3 GA(2006 年 3 月) |
Solaris Enterprise System 下载中心 |
Solaris Enterprise System 许可证。如果没有产品许可证,则不提供任何支持选项。 |
Message Queue Enterprise Edition(通过 SunStore、DVD、单个许可证、Java Enterprise System 许可证、Suite 许可证以及通过 Java Enterprise System 提供) |
Java Enterprise System 或 Suite 下载中心、介质 |
Solaris Enterprise System 或 Suite 下载中心、介质提供 |
无更改。 |
新函数:MQGetDestinationName()
MQGetDestinationName (const MQDestinationHandle destinationHandle, MQString * destinationName); |
使用此函数可以获取目的地的名称。返回的 destinationName 是一个副本,调用方通过调用 MQFreeString() 函数来负责释放该副本。
参数
要获取其名称的目的地的句柄。
名称的输出参数。
使用回复模式时,此函数会非常有用。可以使用 MQGetMessageReplyTo 函数获取要将消息发送到的目的地的句柄。然后可以使用 MQGetDestinationName 获取该目的地的名称。获取目的地名称之后,便可以根据此名称来处理消息。
新枚举值:MQ_MESSAGE
新的 MQMessageType (MQ_MESSAGE) 允许 C 客户端与其他使用 C 和 Java 的 Message Queue 客户端交换 Message 类型的 JMS 消息。
typedef enum _MQMessageType {MQ_TEXT_MESSAGE = 0, MQ_BYTES_MESSAGE = 1, MQ_MESSAGE = 3, MQ_UNSUPPORTED_MESSAGE = 2} MQMessageType; |
MQ_MESSAGE 类型用于标识具有标题和属性但没有消息主体的消息。使用 MQCreateMessage() 函数可创建此类型的消息。
新连接属性 MQ_UPDATE_RELEASE_PROPERTY,用于指定已安装的 Message Queue 的更新发行版本。使用 MQGetMetaData() 函数可获取版本信息。
为了提高性能,对 Message Queue 的持久性存储库格式进行了两处更改。一处是对文件存储库的更改,另一处是对 JDBC 存储库的更改。
文件存储库中的事务信息 - 已经对事务状态信息(存储在 Message Queue 的基于文件的持久性存储库中)的格式进行了更改,以减少磁盘 I/O 并提高 JMS 事务性能。
Oracle JDBC 存储库 - 在早期版本的 Message Queue 中,适用于 Oracle 的存储库结构使用 LONG RAW 数据类型来存储消息数据。在 Oracle 8 中,Oracle 引入了 BLOB 数据类型,不再使用 LONG RAW 类型。Message Queue 3.7 UR1 为此转而使用 BLOB 数据类型,以提高性能并提供更多支持。
由于这些更改会影响存储库的兼容性,因此存储库版本已由 350 更改为 370。Message Queue 3.7 UR1 支持将持久性存储库从早期的 200 和 350 版本自动转换为 370 版本(同时适用于 JDBC 存储库和基于文件的存储库)。imqbrokerd 首次启动时,如果实用程序检测到早期版本的存储库,则会将其迁移为新的格式,并保留早期的存储库。
如果需要回滚此升级,请首先卸载 Message Queue 3.7 UR1,然后重新安装以前运行的版本。由于未对存储库的早期副本进行任何更改,因此代理可以运行存储库的早期副本。