MSDN Library

教程:使用 BizTalk 服务桥来与 Service Bus 中继服务相互发送和接收消息

更新时间: 2015年8月

本教程提供有关如何将具有不同架构的 XML 消息发送到使用 Microsoft Azure BizTalk Services部署的单个桥接终结点。桥接将处理消息,并根据定义为解决方案的一部分的业务逻辑,将消息路由到多个中继服务。本教程将使用此方案展示其他 BizTalk 服务功能,例如:

  • 路由筛选器:桥接可让你基于筛选器将消息路由到所需的收件人。可以针对作为消息的一部分传递的某些值设置筛选器。例如,如果 XML 消息中元素 <Recipient> 内的值设置为 Finance,则将消息发送到服务 A。否则,将消息发送到服务 B。有关详细信息,请参阅The Routing Condition

  • 路由操作:路由操作有助于弥补协议不匹配情况。例如,假设有两个应用程序:应用程序 A应用程序 B应用 A 使用 REST 协议发送消息,而应用 B 仅接收 SOAP 消息。如果应用 A 改为向桥接发送消息,则桥接将会通过路由操作在消息中包含 SOAP 标头。然后,桥接将该消息发送到应用 B。有关详细信息,请参阅The Routing Action

  • 答复操作:答复操作在向客户端发回响应时提供的功能,与路由操作在向收件人发送消息时提供的功能相同。因此,如果应用 B应用 A 发送响应,桥接将使用答复操作功能来戳记包含客户端所需标头的响应。有关详细信息,请参阅 Reply Action

本教程将使用一个业务方案来演示桥接的这些功能,此外还将演示其他一些功能。

Northwind Traders 是一家汽车保险公司。Northwind Traders 接收采用 XML 格式、符合标准 ACORD 架构(保险通讯的行业标准)的新型险种报价请求。传入的消息可以是符合 ACORD 标准的任何格式。因此,Northwind Traders 必须配置一个解决方案来处理符合多种 XML 架构的 XML 消息。Northwind Traders 接收消息后,将根据提供的 ACORD 消息架构验证消息,再将它转换成 Northwind 内部的架构。然后,Northwind 将消息发送到可对其做进一步处理的后端服务。但是,在将消息发送到该服务之前,需要满足某些路由条件。

  • 如果消息中的报价金额小于 $10000,则必须将消息发送到某个中继服务,例如 RelayReceiverServiceA。在将消息发送到该中继服务之前,必须在消息标头中添加一个名为 QuoteType 的 SOAP 标头。此标头的值必须设置为 SmallAmounts

  • 如果消息中的报价金额大于 $10000,则将消息视为高风险理赔,从而需要将它发送到另一个中继服务,例如 RelayReceiverServiceB。在将消息发送到该服务之前,必须在消息标头中添加一个名为 QuoteType 的 SOAP 标头。该标头的值必须设置为 LargeAmounts

接收消息后,这些服务将生成响应,添加标头,然后将响应发回到桥接。这些服务将添加以下标头:

 

来自服务的响应 添加的标头

RelayServiceA

 

标头名称 标头值

MsgStatus

成功

Eligibility

ApprovedForSmallAmounts

RelayServiceB

 

标头名称 标头值

MsgStatus

成功

Eligibility

ApprovedForLargeAmounts

来自服务的响应采用的格式与 Northwind 的内部请求格式相同。桥接接收响应后,会将它转换成符合 ACORD 标准的响应消息架构。桥接还将从 MsgStatus 标头中提取值,然后将该值分配到响应架构中的某个元素。最后,在将消息发回到客户端之前,桥接将添加名为 ProcessingStatus 的另一个标头,并将其值设置为 Complete。下图展示了此方案。

将桥用于中继服务

Northwind Traders 使用 BizTalk 服务 设置此方案。下面描述了 Northwind Traders 在其内部为此方案采取了哪些措施来实现端到端的通信:

  • Northwind 创建了两个中继服务:RelayReceiverServiceARelayReceiverServiceBRelayReceiverServiceA 接收报价金额小于 $10000 的消息。RelayServiceB 接收报价金额大于 $10000 的消息。在接收消息后,这两个服务将生成响应消息,并使用标头来戳记该消息,如业务方案中所述。

  • Northwind 创建了一个 BizTalk 服务项目,并添加了一个 XML“请求-答复”桥接用于处理传入的 XML 消息以及发送响应。另外,Northwind 为 RelayReceiverServiceARelayReceiverServiceB 各添加了一个双向中继服务组件。

  • Northwind 向 BizTalk 服务项目添加了全部所需的项目(架构和转换)。

  • Northwind 配置了 XML“请求-答复”桥接的 request 路径以完成以下操作:

    • 配置验证阶段,以根据 ACORD 架构验证 XML 消息。

    • 配置扩展阶段以升级属性,稍后将要根据这些属性将消息路由到后端服务。

    • 配置转换阶段,以将消息从 ACORD 架构转换成 Northwind 的内部架构。

  • Northwind 配置了 XML“请求-答复”桥接的 response 路径以完成以下操作:

    • 配置扩展阶段以提取中继服务在响应消息中添加的 MsgStatus 标头。

    • 配置转换阶段,以将中继服务发来的响应转换成符合 ACORD 标准的消息架构。在此阶段,桥接还将 MsgStatus 标头中的值分配到响应架构中的某个元素。

    • 配置答复操作,以在发送到客户端的响应消息中包含 ProcessingStatus 标头。

  • Northwind 向 BizTalk 服务项目添加了两个外部中继终结点用于代表两个中继服务,然后将它们连接到 XML“请求-答复”桥接桥。在配置这些路由连接器期间,Northwind 执行了以下操作:

    • 连接桥接配置设计图面上的所有组件,并根据报价金额设置筛选条件。

    • 戳记消息中的 QuoteType 标头,并根据消息要路由到的服务,将该标头的值设置为 SmallAmountsLargeAmounts

  • 最后,Northwind 在 Service Bus 和 BizTalk 服务项目上向 BizTalk 服务部署了两个中继服务,并向桥接终结点发送了一条消息。

本教程围绕示例 Bridges_RelayServices.zip 展开,该示例作为从 MSDN 代码库下载的内容的一部分提供。你可以使用该示例并浏览本教程来了解该示例是如何生成的。你也可以使用本教程来创建自己的应用程序。本教程主要用于第二个目的,因此你可了解此应程序是如何生成的。此外,为了尽可能保持与示例相一致,本教程使用的项目(例如架构和转换)的名称与示例中的名称相同。

尽管 Microsoft 建议你遵循本教程来理解概念和过程,但在实际使用该示例时,请执行以下操作:

  • 下载 Bridges_RelayServices 示例并做出相关的更改,例如,提供你自己的 Service Bus 命名空间、颁发者名称和颁发者密钥。做出所需的更改后,生成和部署应用程序。

  • 生成并托管两个中继服务,用于接受通过桥接接收的请求消息。

  • 使用包中随附的 MessageSender 工具向桥接发送请求消息。查看有关服务的命令提示以及 MessageSender 工具,以确定消息是否处理成功。如果消息处理成功,项目的 \bin\Debug 文件夹中将会保存请求与响应架构。相关命令提示中也会显示消息文件的位置和名称。

请从 BizTalk 服务下载位置 (http://go.microsoft.com/fwlink/?LinkId=235057) 下载并安装 BizTalk 服务 SDK。有关说明,请参阅安装 Azure BizTalk 服务 SDK。安装该 SDK 时,将在 Visual Studio 中安装 BizTalk 服务项目模板。使用此项目模板可以创建用于验证和转换消息以及将消息路由到不同终结点(如业务方案中所述)的桥接。

另请参阅

其他资源

教程和示例

显示:
© 2016 Microsoft