【发布时间】:2015-08-07 08:40:25
【问题描述】:
在我们的一种解决方案(纯消息传递,无编排)中,我们使用 MLLP 适配器和 HL7v2x 管道在请求响应接收位置接收消息。接收管道生成响应消息并发布它,由于提升的属性,它通过请求/响应接收端口的发送管道路由回客户端。
然后我们有一个订阅接收到的消息的双向发送端口,使用映射来转换消息并发送到同样位于同一 BizTalk 计算机上的请求响应 WCF 接收端口。这听起来很奇怪,但我们有一些客户端通过 Web 服务发送数据,还有一些通过 HL7v2 MLLP 发送,这就是我们这样做的原因。
WCF 请求响应接收端口还通过发布消息并提升 EpmRRCorrelationToken、CorrelationToken、ReqRespTransmitPipelineID、RouteDirectToTP、IsRequestResponse 和 ReceivePipelineResponseConfig 属性来生成响应,这会导致响应通过发送管道作为 SOAP 响应进行路由。
我们订阅在 WCF 请求响应端口上收到的消息,并将它们放到一个文件中。
从技术上讲,它是有效的。使用 MLLP 的客户端会收到确认响应。使用 WCF SOAP Web 服务的客户端获得 SOAP 响应。文件系统包含所有已发送的消息。
因此,如果我考虑发布的消息,我想有通过 MLLP (A) 接收到的 HL7v2 消息和 HL7v2 响应 (B)。然后 WCF 接收到的翻译消息接收端口 (C),它的响应 (D)。加上 WCF 发送端口 (E) 收到的 WCF 响应,如附件 所示。
问题是我们在 BizTalk 中收到暂停消息,例如“双向接收端口“xxx”的响应消息正在暂停,因为消息传递引擎无法将响应与现有请求消息相关联。这通常当宿主进程被回收时发生。”在这种情况下,服务是 MLLP 接收端口,有 3 条暂停消息 - HL7v2 ACK (B),以及我怀疑的 WCF 服务 (D) 和 (E) 的响应消息的 2 个副本。
我们还看到错误“实例已完成但未使用其所有消息。该实例及其未使用的消息已暂停。”
【问题讨论】:
-
这里有另一个帖子有相同/类似的问题(尚未解决)stackoverflow.com/questions/30405438/…
-
我想你会从 MLLP 适配器获得提升的属性,导致 SOAP 消息被路由回 MLLP 适配器,即使它们不应该这样做。自定义管道组件以清除该属性?
-
看看我上面链接的问题,看看他是如何解决的。
-
是的,促销属性的价值正在结转。 :)
-
如果您查看其他问题,发帖者发现
BTS.RouteDirectToTP被转移并导致消息被路由回不希望的 MLLP。
标签: biztalk hl7 biztalk-2013