通过 AS2 传入的 EDI 消息的接收方处理

通过 AS2 传入的 EDI 消息的接收方处理包括接收 AS2 消息、发送一个 MDN、处理 EDI 负载和发送 EDI 确认(如果已启用)。

AS2EdiReceive 接收管道接收 AS2 消息、并在该消息内拆装 EDI 负载。 AS2EDISend 发送管道发送一个 MDN 以响应 AS2 消息,并返回一个 EDI 确认以响应 EDI 消息。 可以将这些管道包含在一个 HTTP 双向要求响应发送端口中(如果 MDN 是同步的),或者包含在一个单向 HTTP 发送端口和一个单向 HTTP 接收端口中(如果 MDN 是异步的)。

若要通过 AS2 接收 EDI 交换,BizTalk Server 将执行以下步骤:

  • 处理收到的 AS2 消息

  • 发送一个 MDN

  • 处理收到的 EDI 有效负载

  • 发送 EDI 确认

处理 Received AS2 消息

AS2EdiReceive receive 接收管道中的 AS2 解码器处理传入的 AS2 消息。 它使用 InboundHTTPHeaders 上下文属性执行此操作,HTTP 适配器从 AS2 消息中的 HTTP 标头创建该属性。 这些标头包括下列 AS2 标头:

  • AS2-To

  • AS2-From

  • AS2-Version

  • 消息 ID

  • OriginalMessageID(仅限 MDN)

  • Disposition-Notification-To(如果请求一个 MDN)

  • Receipt-Delivery-Option(如果请求一个 MDN)

  • Signed-Receipt-MICalg(如果请求一个 MDN)

    AS2 解码器将把这些标头升级到消息的上下文。 随后将执行以下操作:

  • 执行协议解析以确定用于处理传入消息的属性。 有关详细信息,请参阅 传入 AS2 消息的协议解析

  • 使用 AS2-From 属性对发件人进行身份验证。

    注意

    有关 AS2 接收管道对传入 AS2 消息执行的处理的详细信息,请参阅 处理传入 AS2 消息

发送一个 MDN

如果已启用 MDN,则 AS2EdiReceive 管道将生成一个 MDN 并将其放入 MessageBox 中。

注意

有关 AS2 接收管道在传出 MDN 上执行的处理的详细信息,请参阅 生成传出 MDN

同步模式

如果 EDI 消息是通过 AS2 以同步模式发送的,则 BizTalk Server 将通过该同步连接返回 MDN,然后关闭该连接。 由于连接已关闭,BizTalk Server 无法通过该连接返回一个 EDI 确认(997、TA1 或 CONTRL)。 EDI 确认始终通过 AS2 异步发送。

MDN 将由 AS2EDIReceive 管道生成,并由该管道路由到 MessageBox,然后由作为请求响应接收端口一部分的 AS2Send 管道自动提取。

异步模式

如果在异步模式下通过 HTTP/HTTPS 传输发送 EDIINT/AS2 编码的消息,则必须创建发送端口以单独返回 MDN。 可以将此发送端口配置为既返回异步 MDN 也返回 EDI 确认。 如果它是一个动态发送端口,则将使用消息标头中 Receipt-Delivery-Notification 行中的地址将该消息路由到贸易合作伙伴。 如果它是一个静态发送端口,则它将使用在端口属性中配置的地址。 此发送端口使用 EdiIntAS.IsAS2AsynchronousMDN==True 筛选器表达式订阅异步 MDN。

在异步处理过程中,AS2EdiReceive 管道将在 MDN 之外还生成一个 HTTP 响应。 接收端口通过接收端口和发送方之间的 HTTP 连接对原始发送方返回 HTTP 响应,这将关闭该连接。 这是必要的,因为 MDN 不会关闭同步连接。

如果 BizTalk 通过 HTTP/HTTPS 传输 EDIINT/AS2 编码的消息,但是在处理 EDI 编码的负载时失败,原始消息的发送方既会收到表示成功处理了 AS2 的 MDN 确认,也会收到表示 EDI 处理失败的 EDI 确认。 EDI 编码的有效负载将暂停,并发布错误。

处理收到的 EDI 负载

如果 EDI 协议的 入站批处理选项 设置为 拆分交换,则与双向请求响应接收位置关联的 AS2EdiReceive 接收管道将 EDI 消息分析为每个 EDI 事务集的单独 XML 消息。 如果“ 入站批处理”选项 设置为 “保留交换”,则接收管道不会分析 EDI 消息。

接收管道将 XML 事务集或保留 EDI 交换路由到 BizTalk MessageBox。

如果该消息将被路由到后端应用程序,则发送端口将提取该 XML 消息并将其路由到应用程序。

注意

此发送端口可以是任何类型。

发送 EDI 确认

如果已启用 EDI 确认,则 AS2EdiReceive 接收管道中的 EDI 拆装器将生成 EDI 确认(如果启用)。 该 EDI 确认必须由 AS2EdiSend 发送管道使用单独的单向发送端口进行发送。

如果将 EDI/AS2 消息的双向请求-响应接收端口设置为在异步 MDN) 的情况下返回同步 MDN 或 HTTP 响应 (,则将忽略“协议属性”对话框中单向 EDI 协议的“本地主机设置”页中设置的“请求-响应接收端口上的路由 ACK 以发送管道” (属性) 。 即使选中此属性,发送管道将返回一个同步 MDN 或 HTTP 响应,而不是 EDI 确认。

有关详细信息,请参阅 发送 EDI 确认

另请参阅

BizTalk Server 如何接收 AS2 消息