【问题标题】:How to dispatch message to several destination with apache camel?如何使用 apache camel 将消息发送到多个目的地?
【发布时间】:2017-05-11 14:54:16
【问题描述】:

我的问题似乎很简单,但我还没有找到解决方法......

我有一个正在运行的旧系统和一个将取代它的新系统。这只是 rest webservices 调用,所以我在 http 服务上使用简单的桥接端点。

为了确保等功能运行,我想将它们放在骆驼路线调度消息的后面,向两个系统发送消息,但只返回旧系统的响应并记录两个系统的响应,以确保它们以相同的方式运行...

我创建了这条路线:

   from("servlet:proxy?matchOnUriPrefix=true")
        .streamCaching()
        .setHeader("CamelHttpMethod", header("CamelHttpMethod"))
        .to("log:com.mylog?showAll=true&multiline=true&showStreams=true")
        .multicast()
        .to(urlServer1 + "?bridgeEndpoint=true")
        .to(urlServer2 + "?bridgeEndpoint=true")
        .to("log:com.mylog?showAll=true&multiline=true&showStreams=true")
    ;

它可以调用每个服务并记录消息,但是响应一团糟......

如果第一个服务器没有响应,第二个不调用,如果第二个响应一个错误,只有那个错误被发送回客户端......

有什么想法吗?

【问题讨论】:

    标签: http apache-camel


    【解决方案1】:

    您可以在多播文档http://camel.apache.org/multicast.html中查看更多详细信息

    多播的默认行为(您的情况)是:

    • parallelProcessing 为 false,因此路由被一一调用

    要正确实施您的案例,您可能需要:

    • 为每个外部服务调用添加错误处理,因此异常不会停止正确处理
    • 配置或实现一些聚合器策略并将其放入 strategyRef,以便您可以将所有调用的结果组合到单个多播结果中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      相关资源
      最近更新 更多