WCF路由服务,转发对另一个服务的响应

时间:2013-10-29 02:22:13

标签: c# .net wcf wcf-routing

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

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

我们现在被困在如何将响应转发到另一个队列,这是WCF RoutingService中可能的用例吗?

先谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

如果我理解正确,就无法实现你想做的事。

路由器可以接收消息A并将其转发到req-reply服务,称之为服务B.它还可以从服务B接收响应,然后将响应转发为异步消息服务C.

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

我理解正确吗?

答案 2 :(得分:0)

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

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

我有类似的处理方式,任何有关如何解决问题的指示都将受到高度赞赏。

最佳选择是" RoutingService"不是密封的类 - 这样,我们可以创建自己的服务并实现我们想要的合同并覆盖行动。