本方案演示了 Web service,它使用 MIME 作为域为支持 WebSphere MQ 的应用程序提供接口。该方案的消息流以及得到的消息树如下:
当 MIME 消息进入消息流时,该消息的顶级 Content-Type 存储在 HTTPInputHeader 树和 MIME 逻辑消息树中。代理也将消息的 Content-Type 副本存储为 Properties 子树中的 ContentType 值。下图显示了消息离开 HTTPInput 节点后的消息树:
SET OutputRoot.XML.X.rid = CAST(InputLocalEnvironment.Destination.HTTP.RequestIdentifier AS CHARACTER);下图显示了离开 Compute1 后的消息树:
如果接收 MQ 消息的应用程序期望消息为 MIME 格式,则需要 MIME 树。Compute1 可以通过创建新的 MIME 树,或者修改并传播现有的 MIME 树生成 MIME 树。要修改消息的 Content-Type,应该使用代理的 ContentType 属性。当修改代理的 ContentType 属性时,会自动更新 MIME 树中的 Content-Type 属性。
SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier = CAST(InputRoot.XML.X.rid AS BLOB);Compute2 也可以设置明确的 HTTPReplyHeader。
如果输出域是 MIME,则必须创建 MIME 树才能输出该消息。Compute2 根据需要创建新的 MIME 消息或者修改并传播输入 MIME 消息,以创建输出消息。下图显示了消息离开 Compute2 后的消息树:
此方案可能有许多变种。例如,可以使用 MQGet 节点而不是 MQInput 节点创建单个流,这样就无需保存 HTTP 相关因子。但是,其伸缩性可能会较低。协调请求应答样本给出了有关使用 MQGet 节点的更多信息。