迁移消息流

开始之前:

请阅读有关V5 代理参与 V6 代理域的条件的概念主题。

您可迁移在 V2.1 产品(WebSphere MQ Event BrokerWebSphere MQ Integrator BrokerWebSphere MQ Integrator)中创建的消息流,并在 WebSphere Message Broker V6.0中使用它们。

如果要从 WebSphere MQ Event Broker V2.1 迁移,将不会应用本主题内有关用户定义的插件和 ESQL 的所有信息;因为这些工具在 WebSphere MQ Event Broker V2.1 上不可用。

如果已经从 WebSphere MQ Integrator Broker V2.1 迁移,您可能编写了处理 XML 消息(这些消息使用 XML 名称空间)的消息流。在 V2.1 中,解析这类 XML 消息的方法与 WebSphere Message Broker V6.0 所用的方法不同。虽然由 V6.0 托管时,此类消息流仍可继续正确运行,但最好通过执行使消息流能够感知名称空间中的步骤升级消息流以使它们能了解名称空间。

您可能要更改迁移的消息流以利用 V6.0 中提供的新节点和功能。例如,可能要用内置 HTTPInput 节点替换接收 Web service 请求的用户定义的节点。

有关该发行版中更改内容的更多信息,请参阅 V6.0?

如果要在相同的消息流项目中定义消息流,可以一次迁移多个消息流。必须通过包含子流和用户定义的节点的消息流来迁移这些子流和节点,以确保引用一致。

如果已经定义了多个具有相同名称的消息流,或已经将该消息流导出到多个导出文件中,则不带任何警告,迁移任务用它找到具有相同名称的下一个流覆盖任何现有的消息流。因此,要小心避免冲突,并确保要迁移的多定义消息流的最新版本是最后一个版本。

如果具有同一个消息流的多个版本,并用此作为相同迁移目录中其他流中的子流,则导入的结果是无法预测的。

要迁移消息流:

  1. 在卸载 V2.1 之前,使用 V2.1 工具从控制中心导出消息流或流(有关详细信息,请参阅 V2.1 文档)。

    当所有引用的子流都包含在同一个导出文件中时迁移过程最有效,因此请将要迁移到单个消息流项目的所有消息流导出到单个导出文件中。

  2. 将导出文件传输到运行工作台的新系统上。 检查您存储这些文件的目录不包含任何其他文件。将您要导入到单个消息流项目中的文件存储到个别目录中并分别迁移每个目录。确保您在存储项目目录的子目录中没有存储任何文件,因为这些文件将被迁移命令忽略。
  3. 如果已将工作台会话激活,则关闭它。 您不能在工作台运行时运行迁移命令。
  4. 在命令提示符处,调用 mqsimigratemsgflows 命令,指定新项目名称和存储导出文件的目录。 命令完成时:
    • 包含在指定目录的导出文件中的消息流已导入到指定的消息流项目中。如果该项目已经存在,则其他消息流与当前内容(如果有)一起包含。如果在调用命令前项目不存在,则为您创建一个。建议允许命令为您创建消息流项目。
    • 创建了消息流和子流,并且它们的定义存储在名为 flow_name.msgflow 的文件中。创建了用户定义的节点,并且它们的定义存储在名为 node_name.msgnode 的文件中。

      如果要在导入后重命名这些消息流或节点的任何一个来与本地命名约定保持一致,则使用工作台提供的工具保持所有引用的一致性和完整性。请勿重命名文件系统内的任何文件。

    • 如果消息流中任何节点包含 ESQL,则从节点本身抽取它并存储在 ESQL 文件 message_flow_name.esql 中。 已经在相应的 CREAT 和 END MODULE 语句之间打包了每个节点的 ESQL(例如,Compute、Database 或 Filter)。如果 ESQL 文件不存在,则命令会创建一个。

      更新开始当您将消息流添加到 BAR 文件时,在 V6.0 级别生成运行时 ESQL 代码。该代码与 V2.1 代理不兼容。 如果要使 BAR 文件包括 V2.0 运行时 ESQL,则选中编译代理 V2.1 的 ESQL框。如果要执行该操作,则无法在 ESQL 代码中包含 V6.0 增强功能,但可以将流部署到 V2.1V6.0 代理。更新结束

      有关更多信息,请参阅 将文件添加至代理归档主题。

  5. 请查看写到您调用命令的目录中的报告文件 mqsimigratemsgflows.report.txt 此命令提供下列信息:
    • 已迁移的每个消息流、子流和用户定义的节点的名称。如果这些资源的任何一个具有与 V6.0 不兼容的名称,则命令会更新该名称和所有对该名称的引用以确保一致性。 (如果您多次用无效名称迁移资源,则始终对该名称进行同样的校正。)
    • 每个迁移的资源是成功还是失败
    • 无法定位子流的指示(在任何导出文件中不包含其定义,但包含在一个或多个已迁移的消息流中)。如果这种情况发生,则查找缺少的子流并将它导入到相应的项目中。如果您出于某些原因无法检索缺少的子流,则用原始名称重新创建它。然后,所有受影响的流都正确链接到新子流。

      您无需重复整个导出和导入过程。

    • 资源作为消息流迁移并存储在 .msgflow 文件中的指示可能是用户定义的节点。如果该警告出现,则检查指定的资源是用户定义的节点还是消息流。如果是消息流,则已经正确迁移。如果是用户定义的节点,则完成在第 11 歩中概括的操作。
  6. 启动工作台并切换到“代理应用程序开发”透视图
  7. 右键单击由迁移命令创建或更新的项目然后单击打开项目来打开该项目。

    如果项目已打开,则先右键单击再单击刷新,然后单击重建项目来确保导航器视图显示的是新内容。重建还执行消息流项目内容的验证。

    由于在 V6.0 中用不同的方法处理 ESQL 和映射,所以迁移过程用不同的 V6.0 节点来替换某些 V2.1 节点。下表列出了被替换的节点。与每个节点关联的 ESQL 都作为具有缺省名称的模块进行创建,并且节点属性设置为该模块的名称:

    V2.1 节点 V6.0 节点
    Compute Compute
    Filter Filter
    Database Database
    DataDelete Database
    DataInsert Database
    DataUpdate Database
    Extract Compute
    Warehouse Database
  8. 如果消息流包含一个或多个 Filter 节点,则检查 ESQL 文件中每个节点的 ESQL 模块以确保 RETURN 语句正确返回了解析布尔值的有效表达式。
  9. 如果消息流包含带有 ESQL 的节点,该 ESQL 引用派生自导入的 C 头的消息中的字段,且您已通过将 C 头导入工作台重新创建了消息模型,则检查引用该消息的 ESQL 语句。 导入 V6.0 工作台可能会创建一个模型,它使用不同于 V2.1 导入器所创建的命名约定,并且您可能需要更新一个或多个字段引用。
  10. 如果已提升包含 ESQL 定制的任何 V2.1 节点的 ESQL 属性,从而在多个节点中再次使用 ESQL,则在迁移的 V6.0 消息流中不会将其保留,因为相关 ESQL 的属性提升已不再受支持。任务视图为每个 ESQL 提升的属性显示错误。要达到相同的效果,可创建 ESQL 函数并从每个节点的 ESQL 模块调用该函数。
  11. 如果已迁移用户定义的节点,则仅将 XML 接口定义文件迁移到节点 .msgnode 文件(这仅定义节点的终端和属性)。请在产品的 V6.0 中手动完成其迁移及定义。以下步骤概括了所需过程:有关完整的详细信息,请参阅在工作台中创建用户定义节点的用户界面表示
    1. 创建用户定义的节点项目并将 .msgnode 文件从消息流项目移至新的用户定义的节点项目中。 执行该操作时,会创建相关联的属性文件。
    2. 可选:在 Eclipse 环境中完成用户定义的节点的开发,以创建用户定义的节点 Eclipse 插件(目录结构,包含组成该节点的文件)。 该任务会根据需要包含用于帮助、图标以及属性编辑器和编译器的节点资源的创建。
    3. 在任务列表中查看错误。 可能会在以下情况中生成错误:例如,在节点或其终端名称中包含空格字符(V6.0 中不支持),或者流嵌入在另一个迁移的流中且引用不正确。通过改正名称或使用定位子流菜单选项可解决这些错误。
    4. 在相应的代理系统上为节点(.lil 文件)安装运行时代码。 您无需在迁移用户定义的节点时重新编译该节点的代码。
    5. 停止然后重新启动代理以识别新的或更改过的文件。
如果已迁移资源,请参阅 V2.1 后迁移任务获取有关您可能要在迁移后执行的任务的信息。
相关概念
消息流概述
ESQL 函数
相关任务
使消息流能够感知名称空间
打开现有的消息流
定义消息流内容
正在开发 ESQL
相关参考
“代理应用程序开发”透视图
ESQL 编辑器
内置节点
mqsimigratemsgflows 命令
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ac02355_