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



使用使用flow-ref引用另一个流的私有流或使用请求-响应样式的vm端点之间的区别是什么?

它们都有自己的处理、线程和异常策略?使用其中一个比使用另一个有什么好处或规则吗?

From Mule In Action第2版:在Mule3之前,许多VM端点被用来将服务绑定在一起。但是从Mule 3开始,另一个共享流的选项叫做private flows

私有流是另一种类型的可重用流,与子流非常相似,但是在线程和异常处理方面有着非常不同的行为。的使用私有流而不是子流的主要原因是在其中定义一个与调用流不同的异常策略子流不可能)。

当调用sub-flow时,执行的行为就好像子流的消息处理器实际上位于调用流。对于私有流,执行的行为就像传递了消息一样从调用流到私有流。这种分离允许定义私有流本地的处理和错误处理策略。

我认为private-flow是处理请求-响应而不使用vm端点的新方法,并为sub-flowre-usability提供exception-handlingprocessing-strategy的附加组件

主要区别是:

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

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

你的意思可能是通过flow-ref调用异步流和通过VM队列调用异步流有什么区别。

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

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

最新更新