WCF 路由服务,将响应转发到另一个服务

本文关键字:服务 转发 响应 另一个 路由 WCF | 更新日期: 2023-09-27 18:37:17

我们计划使用 WCF 路由服务。

假设我们有两个队列(q1、q2),路由服务从 q1 中获取消息,将其转发到请求-回复服务,一旦路由服务收到响应,它就会再次转发到 q2。

我们现在陷入了如何将响应转发到另一个队列的问题,这是 WCF 路由服务中可能的用例吗?

提前感谢您的帮助。

WCF 路由服务,将响应转发到另一个服务

路由服务使用 MessageFilter 定义来定义消息交换的特定属性,例如地址、终结点名称,甚至是用于完全基于内容的路由的特定 XPath 语句。

以下 MSDN 链接提供了路由服务消息筛选器定义的全面概述:
http://msdn.microsoft.com/en-us/library/ee517424.aspx

如果我理解正确,就没有办法实现你想做的事情。

路由器可以接收消息A并将其转发到请求回复服务上,称之为服务B。它还可以从服务 B 接收响应,然后将响应作为异步消息转发给服务 C。

但是,路由器无法根据来自服务 B 的响应内容将消息 A 发送到服务 C,因为此时来自服务 B(而不是消息 A)的响应将是正在处理的当前消息。

我理解正确吗?

我开始探索 IOperationInvoker 以在实际调用操作之前拦截该操作

  • 此时,您可能需要手动建立到其他服务的通道以收集您的信息。
  • 痛点可能是反序列化作为调用程序输入数组的一部分提供的消息对象。将对象转换回消息作为输出。
  • 处理异步方案。

我有一个类似的场景要处理,任何关于你如何解决问题的指示将不胜感激。

最好的选择是让"路由服务"不是一个密封的类 - 这样,我们可以创建自己的服务并实现我们想要的合约并覆盖操作。