本文将介绍如何使用 IBM® ">WebSphere® Message Broker Toolkit Fix Pack 1 中的新特性,以源格式部署和管理 Message Broker 应用程序,而无需在 Toolkit 中编译它们。这些特性提高了应用程序的灵活性,并大大简化了代码更新。
在许多场景中,设计 Message Broker 应用程序来使用消息流、子流、ESQL 模块和映射的源代码部署很有意义。例如,多个流使用的 ESQL 模块可能需要在部署引用流之后更新。在过去,所有包含更新的 ESQL 模块的主要消息流必须重新编译和重新测试。此外,您还必须在安装了 Toolkit 的机器上创建一个 BAR 文件,然后将创建的 BAR 文件复制到目标服务器,并将它部署到目标 Message Broker 服务器。而且因为 Toolkit 仅支持 Message Broker 支持的部分平台,所以无法在相同的 Message Broker 服务器上创建 BAR 文件。
使用 Toolkit Fix Pack 1,您可以部署消息流、子流、ESQL 模块和映射,无需在 Toolkit 中单独编译每一项。因此,您可以在任何 Message Broker 服务器上创建包含这些组件的 BAR 文件,无论 Toolkit 是否可用。本文中的源部署示例展示了如何使用新的 Broker 和 Toolkit 特性实现这些目标。
您可在本文底部 下载一个示例应用程序,该应用程序展示了如何使用独立部署的可重用的组件,比如消息流、子流、ESQL 模块和映射,设计出具有最高灵活性的消息流。示例应用程序还展示了:在需要包含必须在添加到 BAR 文件和部署到 Message Broker 运行时之前编译的消息集或 Java® 代码时,如何在目标服务器上组装 BAR 文件。示例应用程序经过了简化,以便突出强调本文的主要主题。
在过去,所有消息流和子流都在具有 .msgflow 扩展名的文件中实现。可部署的消息流与子流之间的区别取决于消息流内容。如果流拥有可从外部(比如 MQ Input 或 Web Service Input 节点)调用的输入节点,那么它就是一个可部署的消息流,可编译为 CMF 文件并部署到代理中。
当组装 BAR 文件时,会编译所有可部署的消息流资源。该流引用的子流以内联方式合并到父 CMF 文件中,这是一个将可执行代码直接插入文件中的过程。如果父流中有多个子流引用了同一个子流实现,那么已编译的 CMF 中的子流的内联副本将取代每个节点。如果一个子流引用了另一个子流,那么嵌套的子流会扁平化并插入父流 CMF 中。在此过程中,ESQL 模块或映射代码也以内联方式合并到 CMF 文件中。
因此,包含一个消息流、一个子流、一个 ESQL 模块和一个映射的应用程序会转换为单个 CMF 文件并进行部署。当需要对容器消息流、子流、ESQL 模块或映射模块执行任何更改时,整个应用程序必须重新编译、重新测试和重新部署。
BAR 文件还必须安装在已经安装了 Toolkit 的机器上,因为组装 BAR 文件需要编译代理应用程序资源,而且编译流程依赖于 Toolkit 工作区元数据。Toolkit 仅可安装在 Linux® 或 Microsoft® Windows® 机器上,因此当 Toolkit 不支持 Broker 服务器操作系统时,无法直接在 Broker 服务器上组装 BAR 文件。
图 1 显示了一个代理应用程序的简单示例,其中包含一个主要的可部署消息流 (Flow1.msgflow)(引用一个子流 Subflow1.msgflow)和一个 ESQL 模块 (esqlflow.esql)。该子流还应用了 esqlsub.esql。在部署时,只有一个 Flow1.cmf 文件,它包含的流中同时包含了 ESQL 模块和内联子流:
传统应用程序 – 单一 CMF
为了使应用程序更加灵活且更易于维护,您可能不希望在进行更新时重新编译、重新测试或重新部署整个应用程序。当需要进行更改时,例如仅更改 ESQL 模块 esqlsub.esql,您可能只希望重新部署受影响的 ESQL 文件,而不用重新部署引用 esqlsub.esql 的所有资源。Toolkit Fix Pack 1 使应用程序更加灵活,使您能够将消息流 (.msgflow)、子流 (.subflow)、ESQL 模块 (.esql) 和映射 (.msgmap) 部署为源文件,而不是 CMF 文件中的已编译版本。
除了上面提及的资源,XML 模式 (.xsd) 定义的映射 (.map)、WSDL 文件 (.wsdl) 和消息模型也可部署为源文件。代理中的消息模型可由 XML 模式和 WSDL 文件定义。在 V8 中,它们不再必须仅使用消息集进行定义(但全面支持消息集所定义的消息模型)。图 2 显示,Toolkit 中创建的相同的源文件可添加到 BAR 文件中,并将代理独立部署为源文件:
新应用程序 – 将资源部署为源文件
通过直接将源文件部署到代理,而不将它们编译为 CMF 文件,可使应用程序更加灵活,因为更改的组件可独立部署到代理中。当只更新一个文件时,只需创建一个仅包含更新的源文件的新 BAR 文件并将它部署到执行组中。这个新源文件将替换执行组中的旧文件,引用流将自动重新启动,以便应用更改。例如,在图 2 中,如果 esqlsub.esql 发生更新,那么它是惟一需要添加到新 BAR 文件中的文件。在将该 BAR 文件部署到同一个默认执行组并运行 Flow1 的时候,该流将会停止,然后应用更新的 ESQL 代码并重新启动。