使用flow-ref或使用vm端点请求 - 响应的私有流有什么区别?

时间:2013-05-13 12:35:33

标签: mule

使用flow-ref私有流来引用另一个流或在请求 - 响应样式中使用vm端点有什么区别?

他们都有自己的处理,线程和异常策略?有什么好处或规则何时使用一个而不是另一个?

3 个答案:

答案 0 :(得分:8)

来自 Mule In Action 2nd ed :在Mule3之前,许多VM端点用于将服务绑定在一起。但是,从Mule 3开始,另一种共享流的选项称为private flows

私有流是另一种可重用的流,非常类似于子流但是 在线程和异常处理方面具有非常不同的行为。该 使用私有流而不是子流的主要原因是在其中定义a 不同的异常策略而不是来自调用流程(事情就是这样) 不可能有子流程。)

当调用sub-flow时,执行的行为就像子流的消息处理器实际位于 呼唤流量。使用私有流,执行的行为就像传递了消息一样 从呼叫流程到私人流程。这种解耦允许定义 私有流本地的处理和错误处理策略。

我认为private-flow是处理请求 - 响应而不使用vm端点的新方法,并为re-usability提供了sub-flow加上exception-handling和{{ 1}}

答案 1 :(得分:7)

主要区别是:

  • 使用VM端点时必须处理属性传播:如果希望它们在VM端点的另一端可用,则必须注意将属性从入站范围复制到出站范围。
  • VM连接器的线程池用于VM端点,而它是与流程默认处理策略一起使用的全局端点或自定义的端点。

答案 2 :(得分:0)

异步流是一种流,默认情况下(但不一定)是异步执行的,VM是基于队列的传输。

您可能意味着通过flow-ref调用异步流或通过VM队列执行异步流程之间的区别。

flow-ref将传递相同的事件和消息进行处理。如果流是异步的,那么默认情况下会在不同的线程上发生,而Mule会复制事件以防止线程之间的干扰。在某些情况下(例如,存在活动事务),尽管流程配置,Mule可能会选择同步执行。所有这些都发生在内存中,这意味着如果服务器崩溃,您可能会丢失消息。

VM是一种传输,这意味着每个流都将获得相同事件但不同消息的副本。发件人的所有出站属性都将成为接收者的入站属性。同步性不取决于流的配置,而是取决于所选的交换模式。此外,您可以将VM配置为使用持久性队列和事务,这将确保正确使用时消息丢失。