重定向失败消息时双向接收端口超时
Timeout in two-way receive port when redirecting failed messages
我有一个双向 WCF 接收端口,我已经检查了两个端口:
1) 路由失败消息
2) 失败时暂停请求消息
需要此配置才能将失败的消息重定向到我们的 "exception portal"。
当收到消息但在 XMLReceive 管道中验证失败时,消息将按预期重定向到我们的 "exception portal"。
然而,问题是 WCF 服务的消费者永远不会出错,因此连接会在一段时间后超时,这让消费者非常困惑。
有办法解决这个问题吗?我错过了什么吗?
当前发生的情况是消息在接收管道上失败,被路由到您的门户,但没有响应被路由回。您必须确保发回消息。您可以通过以下方式做到这一点:
- 创建一个执行验证的编排(而不是在管道上执行),并确保在编排中发送响应并将失败路由到您的门户
- 创建一个验证消息的自定义组件(可能通过在 try 块中调用 XML 验证管道并捕获异常而不重新抛出);如果出错,它会将消息发送到您的门户,并用发送回合作伙伴的合理内容替换
pInMsg
。
- 让您的门户接收位置成为一个请求响应端口(或许,同样,背后有一个编排),并将响应路由回 WCF 双向端口。这种方式涉及更多,老实说,我不完全确定这里的工作实现会是什么样子,但它可能是可能的。
如果由我决定,我会选择 Orchestration。您当然可以从编排调用 XML Validator 管道,或者您可以在其中使用其他验证逻辑(例如调用 BRE)。
我有一个双向 WCF 接收端口,我已经检查了两个端口:
1) 路由失败消息
2) 失败时暂停请求消息
需要此配置才能将失败的消息重定向到我们的 "exception portal"。
当收到消息但在 XMLReceive 管道中验证失败时,消息将按预期重定向到我们的 "exception portal"。
然而,问题是 WCF 服务的消费者永远不会出错,因此连接会在一段时间后超时,这让消费者非常困惑。
有办法解决这个问题吗?我错过了什么吗?
当前发生的情况是消息在接收管道上失败,被路由到您的门户,但没有响应被路由回。您必须确保发回消息。您可以通过以下方式做到这一点:
- 创建一个执行验证的编排(而不是在管道上执行),并确保在编排中发送响应并将失败路由到您的门户
- 创建一个验证消息的自定义组件(可能通过在 try 块中调用 XML 验证管道并捕获异常而不重新抛出);如果出错,它会将消息发送到您的门户,并用发送回合作伙伴的合理内容替换
pInMsg
。 - 让您的门户接收位置成为一个请求响应端口(或许,同样,背后有一个编排),并将响应路由回 WCF 双向端口。这种方式涉及更多,老实说,我不完全确定这里的工作实现会是什么样子,但它可能是可能的。
如果由我决定,我会选择 Orchestration。您当然可以从编排调用 XML Validator 管道,或者您可以在其中使用其他验证逻辑(例如调用 BRE)。