您可以使用与包含内置
或用户定义的节点完全相同的方法在消息流中包含子流。
您还可以使用相同的方法将它们连接到其他节点。因为您可以定义一次子流,然后在多个消息流(甚至在多个消息流项目)中使用它,子流会提供以下好处:
- 再次使用和开发时间缩短。
- 完成特定功能的一致方法,增强消息流的可维护性(将子流视作类似于编程宏,或类似于编写
一次,但在许多地方使用的直接插入代码)。
- 灵活性。如果您提升子流中节点的部分或所有属性,可以将子流定制为适合于特定上下文(例如,通过更新输出队列或数据源信息)。
但切记子流不是单个节点,因此包含子流将增加消息流中的节点数,这可能会影响消息流的性能。
请参阅以下有关子流用法的实例:
- 您可以定义一个子流,它用来提供遇到错误时,应用到多个消息流的公共操作序列。例如,可能有公共错误例程,它将消息通过 Warehouse 节点写到数据库,并通过错误恢复例程将消息放入队列以进行处理。在多个消息流中或一个消息流的多个地方使用该例程能高效且一致地使用资源,并避免每次遇到错误时重复建立这样的例程。
- 您可能在几个不同的消息流之间有要在消息上执行的公共计算。例如,您可能会从数据库访问货币汇率,并应用这些汇率以计算以几种不同货币表示的价格。您可以在每个适当的消息流中包含货币计算器子流。

使用 Passthrough 节点启用运行时子流的版本控制。
Passthrough 节点允许您将标号添加到消息流或子流。
通过将该标号与您的版本控制系统中的关键字替代值相结合,您就可以确定已部署的消息流中所包含的子流版本。您可以为自己使用此标号。如果标号中包含了正确的版本关键字,则可以看到标号值:
- 使用 mqsireadbar 命令,该值存储在代理归档(BAR)文件中
- 如最近一次部署到某个特定的代理,该值在 Message Brokers Toolkit 中已部署的消息流的属性中
- 如果您为该消息流启用用户跟踪,则该值在运行时中。
它在 out 终端上传播的消息与它在 in 终端上接收到的消息相同。例如,如果开发了错误处理子流以包括在几个消息流中,则可能要修改该子流。然而,您最初可能要将已修改的版本只引入包含该版本的消息流子集。设置 Passthrough 节点实例的值,该值标识已包含了子流的哪个版本。

以下样本中说明了子流的用法:
错误处理程序样本和协调请求应答样本中展示了子流的用法。样本 Error Handler 使用子流来捕获出错信息并将此类信息存储在数据库中。协调请求应答样本使用子流将 ReplyToQ 和 ReplyToQMgr 值存储包含到 WebSphere MQ 消息,从而可在其他消息流中轻松地再次使用处理逻辑;使用子流还能使备用实现得以替代。