【问题标题】:WCF Routing Service, forward response to another serviceWCF 路由服务,将响应转发到另一个服务
【发布时间】:2014-11-22 07:04:26
【问题描述】:

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

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

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

提前感谢您的帮助。

【问题讨论】:

    标签: c# .net wcf wcf-routing


    【解决方案1】:

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

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

    【讨论】:

    • 那么这如何帮助 OP 解决他们的问题?
    【解决方案2】:

    如果我理解正确,则无法实现您想要做的事情。

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

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

    我理解正确吗?

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2021-03-05
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        • 2021-04-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多