Apache camel ApacheCamel,如何在路由内执行异步消息传递

Apache camel ApacheCamel,如何在路由内执行异步消息传递,apache-camel,jms,cxf,message-queue,microservices,Apache Camel,Jms,Cxf,Message Queue,Microservices,我想做一个驼峰路由,客户端调用同步SOAP服务。路由将请求转换为异步消息,该消息被发送到消息队列MQ2。路由等待,直到它自己的消息队列MQ1中存在相关的回复消息。最后,路由将应答发送到客户端 我该怎么办 在路由处理同步WS调用中包括异步请求/应答阶段 使用不同的消息队列实例实现这一点,保留传入消息和原始请求之间的相关性 尽可能优化性能,以便在等待时释放资源 确保我能够运行每个服务+MQ捆绑包的多个实例 基本上我有三个服务链,每个服务都有自己的单向消息队列捆绑在服务中。链中的最后一个服务必须将最终

我想做一个驼峰路由,客户端调用同步SOAP服务。路由将请求转换为异步消息,该消息被发送到消息队列MQ2。路由等待,直到它自己的消息队列MQ1中存在相关的回复消息。最后,路由将应答发送到客户端

我该怎么办

  • 在路由处理同步WS调用中包括异步请求/应答阶段
  • 使用不同的消息队列实例实现这一点,保留传入消息和原始请求之间的相关性
  • 尽可能优化性能,以便在等待时释放资源
  • 确保我能够运行每个服务+MQ捆绑包的多个实例
  • 基本上我有三个服务链,每个服务都有自己的单向消息队列捆绑在服务中。链中的最后一个服务必须将最终结果返回给第一个服务,,并且只返回给第一个服务,因为结果不能传递给前面的服务实例(或它们的消息队列)

    此外,如果使用Camel更容易实现,则建议使用带有回调meshanism的单向SOAP服务来实现这一点。关键是,同步调用必须转换为异步操作链,并连接回同步调用。重要的是,第一个服务可能只知道最终结果,并且禁止中间服务获得链中后期服务产生的结果

    或者,是否至少为这个特定问题定义了一个EIP模式,以使我走上正确的轨道

    这里是我到目前为止使用的一个路由示例:它只是将消息发送到MQ2中

        <route id="cxfToJMSRoute">
            <from uri="cxf:bean:endpoint" />
            <convertBodyTo type="String"/>
            <to uri="activemq:queue:api" />
            <!-- How to wait for the correlated reply in different MQ? -->
            <!-- Releasing resource while waiting, if possible -->
            <!-- And finally intercept and return the result -->
            <!-- And do all this with horizontal scalability in mind -->
            <!-- Considering all exceptions like network failures in any segement -->
        </route>