MLLP 发送适配器处理

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

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

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

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

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

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

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

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

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

此适配器在发送原始消息的同一套接字连接上接收 ACK,并将 ACK 传递到接收位置。 发送适配器 (URL) 与远程方保持打开的连接,即使没有消息等待BizTalk Server发送给它。 如果多个端口指向同一远程方,则发送适配器将为每个发送端口维护一个连接。

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

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

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

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

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

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

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

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

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

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

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

错误条件

当存在错误条件或处于非活动状态时,可能会发生以下情况:

  • 如果传出消息在序列化中失败,则发送适配器不会发送消息,除非它是 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 的发送端口