从业务流程运行 Header 属性示例
此示例的这一部分演示了 ESB 如何将 JMS 标头元数据提升为消息上下文属性,Microsoft BizTalk 业务流程中的代码和组件可以访问这些属性。 此示例包含一个接收管道,其中包含将 JMS 标头元数据提升为消息上下文属性的 ESB JMS 组件的实例。
接收端口将消息传递给名为 JMSRouter 的业务流程,该业务流程检索 RfhUtil 实用工具 (分配的队列名称,并从消息的上下文属性) 标头元数据中发送。 业务流程将此队列名称分配给动态发送端口,并将消息发送到该端口。
端口的发送管道包含 ESB JMS 组件的实例,该组件将消息上下文属性降级为 JMS 标头元数据。
运行标头属性访问示例
如果 GlobalBank.ESB 应用程序尚未运行,请使用 BizTalk 管理控制台启动它。
运行 IBM RfhUtil 实用工具;选择名为 ESB 的队列管理器。Jms。用于连接到此队列管理器的第一个下拉列表中的 Sample.QueueManager,如本示例的第 1 部分所示。
在第二个下拉列表中,选择名为 ESB 的目标出站队列。Jms。样品。SENDTOBIZTALK。
单击 RfhUtil 实用工具中的 “ReadFile ”按钮,然后导航到名为 TEST-000128 的测试消息文件。JMS 位于名为 \Source\Samples\JMS\Test\Data\Load\ 的子文件夹中。 此文件包含一批 128 条测试消息,但实用工具仅加载第一条消息。
单击“RFH”选项卡,并确保仅选中“JMS 检查”框。
单击“ jms ”选项卡,并确保所选 的“回复到” 队列为 ESB。Jms。样品。回复,并且所选 目标队列 为 ESB。Jms。样品。DYNAMICQ2。
单击“ 主 ”选项卡,然后单击“ 写入 Q ”按钮,将消息写入队列。
应用程序执行延迟后,ESB 输出消息将显示在 ESB 中。Jms。样品。DYNAMICQ2队列。 打开 WebSphere 队列资源管理器并浏览队列以确认这一点。
示例的工作原理
在业务流程中,代码可以通过将消息加载到 XmlDocument 实例来访问 JMS 标头中的值,如以下代码所示。
if (null != InboundMsg(
Microsoft.Practices.ESB.JMS.Schemas.Property.MQRFH2_NameValueData))
{
jmsInfo.LoadXml(InboundMsg(
Microsoft.Practices.ESB.JMS.Schemas.Property.MQRFH2_NameValueData));
if (null != jmsInfo)
{
if (null != jmsInfo.SelectSingleNode("//Dst"))
{
xElement = jmsInfo.SelectSingleNode("//Dst");
destinationQueue = xElement.InnerText.ToUpper(
System.Globalization.CultureInfo.CurrentCulture);
}
if (null != jmsInfo.SelectSingleNode("//Rto"))
{
xElement = jmsInfo.SelectSingleNode("//Rto");
replyToQueue = xElement.InnerText.ToUpper(
System.Globalization.CultureInfo.CurrentCulture);
}
}
}
此外,代码可以访问消息的所有 MQMD 上下文属性。