在我的场景中,客户端通过 MLLP 将 HL7 发送到我的 BizTalk 双向接收端口。BizTalk 对外部服务进行 Web 服务调用,接收响应,将其转换为 HL7 ACK 并将其返回给客户端,所有这些都在同步事务中进行。
为了实现这一点,我有一个直接绑定到消息框的编排,并且 BTAHL7 方配置设置为不将 ACK 路由到请求-响应接收端口上的发送管道。基本上我会关闭默认的 ACK 生成并从我的编排中生成自定义 ACK。我还在我的业务流程接收形状 BTAHL7Schemas.ParseError == false 中添加了一个额外的过滤器,以便业务流程不会收到错误消息,以防收到的消息与架构不匹配。
一切都很好。在我的测试中,我故意发送错误的 HL7 消息。在这种情况下,我收到一个挂起的路由错误报告,因为没有找到订阅者。
这种行为的原因很清楚——我没有订阅有解析错误的消息。如果出现解析错误,我希望错误 ACK 回到客户端。我可以允许我的编排订阅带有解析错误的消息,并且只是制定一个错误 ACK,但我没有任何方法可以在 ACK 中返回实际的解析错误。
通常,在异步架构中,我会打开“路由 ACK 以在请求-响应接收端口上发送管道”并让 BTAHL72X 接收/发送管道处理它。然后客户端将收到包含错误详细信息的错误 ACK。
所以我的问题是,有没有办法让接收管道原始 ACK 并从我的编排中返回它?