BizTalk 确认传播
BizTalk Ack Propagation
我有一个 BizTalk 接口接收 HL7 消息并将该消息传递到客户端的服务器。对于这个接口,我有一个双向 RP 和一个请求响应 SP。目前的行为是双向RP在收到消息的那一刻会产生一个ACK。然后 SP 将消息发送给客户端,客户端将以 ACK 进行响应。当SP收到ack时,SP会消费client server发送过来的ACK。我的问题是如何配置 Biztalk,以便将来自 SP 的 ACK 传播到 RP 并返回到同一 RP 套接字中的源?我试图避免编排,所以这是否必须是自定义管道组件?
谢谢!
您可以通过使用 HL7 Party 并在“确认”选项卡上将“确认类型”配置为 'None' 来实现您的方法。这将使 HL7 反汇编器在收到消息时不生成确认。在发送端,一旦您从接收系统收到确认,请确保您具有与原始消息上下文相同的 EpmRRCorrelationToken 上下文 属性。您可能需要在发送端口(接收端)上使用自定义管道组件来将此上下文 属性 写入 ACK 消息。这将允许 ACK 消息进入 RCV 端口。我以前从未这样做过,但它应该有效。
从设计的角度来看,这不是一个好主意,因为消息发送系统将等待确认,直到 BizTalk 能够成功发送消息并从消息接收系统接收到确认。您需要考虑以下情况:您的接收系统出现问题并且无法使用消息,或者有计划的停机时间。大多数情况下,发送系统会设置确认超时,如果他们在该时间范围内没有得到确认,则会重试,这会产生重复的消息问题。
首先,使用 Orchestration 没有任何问题。不用担心 'performance'.
因此,正确的 BizTalk 方法是使用 Orchestration 管理与下游系统的同步。
所以,经过大量研究和试错。事实证明,这是 BizTalk 2013 R2 中的原生功能。之前它不工作的原因是因为 RP 正在接收在 RP 的接收管道中生成的 ACK,特别是反汇编器生成的 ACK。因此,当来自客户端 returns 的 ACK 时,它无处可去并在 RP 中暂停。这可以通过创建一个参与方并将确认类型设置为 None 并选中确认路由来解决。
由于实施限制,我无法创建派对来使用上述方法。我不得不为 RP 的接收管道编写一个自定义管道组件,以改为抑制来自反汇编程序的 ACK。这同样有效。
我有一个 BizTalk 接口接收 HL7 消息并将该消息传递到客户端的服务器。对于这个接口,我有一个双向 RP 和一个请求响应 SP。目前的行为是双向RP在收到消息的那一刻会产生一个ACK。然后 SP 将消息发送给客户端,客户端将以 ACK 进行响应。当SP收到ack时,SP会消费client server发送过来的ACK。我的问题是如何配置 Biztalk,以便将来自 SP 的 ACK 传播到 RP 并返回到同一 RP 套接字中的源?我试图避免编排,所以这是否必须是自定义管道组件?
谢谢!
您可以通过使用 HL7 Party 并在“确认”选项卡上将“确认类型”配置为 'None' 来实现您的方法。这将使 HL7 反汇编器在收到消息时不生成确认。在发送端,一旦您从接收系统收到确认,请确保您具有与原始消息上下文相同的 EpmRRCorrelationToken 上下文 属性。您可能需要在发送端口(接收端)上使用自定义管道组件来将此上下文 属性 写入 ACK 消息。这将允许 ACK 消息进入 RCV 端口。我以前从未这样做过,但它应该有效。
从设计的角度来看,这不是一个好主意,因为消息发送系统将等待确认,直到 BizTalk 能够成功发送消息并从消息接收系统接收到确认。您需要考虑以下情况:您的接收系统出现问题并且无法使用消息,或者有计划的停机时间。大多数情况下,发送系统会设置确认超时,如果他们在该时间范围内没有得到确认,则会重试,这会产生重复的消息问题。
首先,使用 Orchestration 没有任何问题。不用担心 'performance'.
因此,正确的 BizTalk 方法是使用 Orchestration 管理与下游系统的同步。
所以,经过大量研究和试错。事实证明,这是 BizTalk 2013 R2 中的原生功能。之前它不工作的原因是因为 RP 正在接收在 RP 的接收管道中生成的 ACK,特别是反汇编器生成的 ACK。因此,当来自客户端 returns 的 ACK 时,它无处可去并在 RP 中暂停。这可以通过创建一个参与方并将确认类型设置为 None 并选中确认路由来解决。
由于实施限制,我无法创建派对来使用上述方法。我不得不为 RP 的接收管道编写一个自定义管道组件,以改为抑制来自反汇编程序的 ACK。这同样有效。