4

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

他们都有自己的处理、线程和异常策略?何时使用其中一个是否有好处或规则?

4

3 回答 3

8

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

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

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

我认为private-flow是在不使用 vm 端点的情况下处理请求响应的新方法,并提供re-usabilitysub-flowexception-handlingprocessing-strategy

于 2013-05-13T13:18:39.370 回答
7

The main differences are:

  • Property propagation must be dealt with when using a VM endpoint: you have to take care of copying properties from inbound to outbound scopes if you want them to be available on the other side of the VM endpoint.
  • The thread pool of the VM connector is used for a VM endpoint while it's either a global one used with the flow default processing strategy or a custom defined one.
于 2013-05-13T18:20:35.980 回答
0

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

您可能的意思是通过 flow-ref 调用异步流或通过 VM 队列调用异步流之间的区别。

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

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

于 2017-05-09T12:19:04.667 回答