MLLP 发送适配器处理

MLLP (下层协议) 发送适配器支持以下配置中的单向和双向传输模式:

  • 双向请求-响应发送适配器

  • 配置为接收确认的单向发送适配器 (AKS)

  • 为无返回消息配置的单向发送适配器

双向请求-响应发送 MLLP 适配器

在真正的端到端同步方案中使用此适配器。 因此,只能将此适配器与一个目标方一同使用。 发送适配器将持续保持针对远程方 URL 的 (连接) 直到它将返回消息路由到请求响应接收端口。 有关请求响应/请求响应处理的体系结构,请参阅下图。

使用此适配器时,可以指示系统向业务线应用程序返回 ACK 或响应消息。 为此,可以使用 BTAHL7 配置资源管理器中的"请求响应接收端口时发送管道的路由 ACK"设置。 选择此属性可返回 ACK,或取消选择它以返回响应会议。

使用此适配器的发送端口成功发送原始消息后,BTAHL7 将删除该消息。 与此发送端口关联的接收管道不会生成 ACK。 无论该响应的 MSA2 字段的值如何,BizTalk 都会将查询响应转发到源应用程序。

配置为接收 AKS 的单向发送 MLLP 适配器

此适配器在发送原始消息的同一套接字连接上接收 AKS,并将这些 AKS 发送到接收位置。 发送适配器持续针对远程方 URL (保持) 连接,即使没有消息等待BizTalk Server发送到该连接。 如果多个端口指向同一远程方,则发送适配器将维护每个发送端口的一个连接。

Microsoft BizTalk Accelerator for HL7 (BTAHL7) 安装程序将安装默认接收位置 TwoWayAckReceiveLocation。 可以将此接收位置与 MLLP 发送适配器一起用于接收 AKS。 使用此适配器的发送端口的此配置要求将接收位置与发送端口关联。

如果设置为接收包含 MSA 字段的响应消息或支持多个目标,请使用此发送端口。 双向请求-响应适配器不与 MSA 字段或多个目标一起工作。

单向 MLLP 发送适配器收到的确认

当为 AKS 配置的单向 MLLP 发送适配器收到一个适配器时,BizTalk Server 会从 MessageBox 数据库中删除原始消息、重试或挂起它,具体取决于 ACK 的类型。 BTAHL7 分两个阶段分析 ACK:

  • 第一阶段在发送适配器中完成,BTAHL7 分析字段 MSA1 以确定 ACK 的类型。

  • 在第二阶段中,BTAHL7 对 ACK 执行完整的分析,然后将 ACK 提交到 MessageBox 数据库。

    在 BTAHL7 配置资源管理器中配置双向发送适配器期望的 ACK。

    下表显示了 MLLP 发送适配器可以接收的 AKS,以及针对原始消息生成的操作。

已收到 ACK 对原始消息的操作
提交接受或应用程序接受 从 MessageBox 数据库中删除
提交/应用程序、拒绝 ACK 或无效 ACK 挂起
提交/应用程序错误 重试/移动到备份传输/挂起
静态 ACK 成功 从 MessageBox 数据库中删除
静态 ACK 失败 挂起

下表显示了无效的 ACK 条件。

实例 条件
HL7 (原始、增强、延迟) 1.不包含 XML。
2.没有 结构,因此无法检索 MSA1 字段;或 MSA1 字段不包含 CA、AA (CR、AR、CE、AE) 。
静态 与允许成功或失败的 ACK 值之一不匹配。
包含 XML 被视为接受 ACK (,而不考虑) 删除原始消息的内容。

错误条件

出现错误条件或不活动时,可能会发生以下情况:

  • 如果传出消息在序列化中失败,则发送适配器不会发送消息,除非它是 BTAHL7 正在流式传输的批处理消息。 如果是这种情况,并且 BTAHL7 在消息的中途检测到序列化失败,则适配器不会发送 EB/CR,BizTalk Server尚未发送完整的消息。 管道记录错误,适配器尝试再次发送批处理消息。

  • 如果发送操作失败,适配器将尝试再次发送消息,最多发送端口配置设置中指定的重试次数。 耗尽重试后,消息将移至备份传输(如果存在)。 如果所有其他操作都失败,则消息将挂起。 挂起的消息将以原始格式 (XML) 形式。

    BTAHL7 可以生成以下事件来描述错误条件:

事件 ID 错误条件
ErrorSendingMessage 8450 无法向远程方发送消息。 最常见的原因是网络故障或超时。 如果发送管道在序列化大型消息时失败,BTAHL7 可能会报告此错误。
ErrorReceivingAck 8451 由于网络故障或超时,无法接收确认。
ErrorConnecting 8453 无法与远程方建立 TCP 连接 - 无法解析主机名,或者远程方未侦听端口或正在拒绝连接。

注意

在原始消息的 MSH5 中 (目标方策略的配置) BTAHL7 是需要 HL7 还是静态 ACK。 如果不匹配,BTAHL7 将 ACK 视为无效。

MLLP 发送适配器处理 ACK 后,ACK 作为消息自行传送到接收位置。 反汇编程序对 ACK 执行完全分析,这可能会导致分析接收管道报告的错误和/或挂起的 ACK。

另请参阅

处理用 MLLP 编码的消息
发送和接收适配器参数
MLLP 接收适配器处理
设置用于接收 ACK 的发送端口