2

我有一个 Mule 应用程序,其目的是发送电子邮件。该应用程序执行 2 个步骤:

1) 在第一个流程中,它接受端点上的请求并将其写入 vm 队列。

2) 在第二个流程中,vm 队列中的消息作为 HTTPPost 发送到 web 服务组件,该组件将发送电子邮件。

所以,到目前为止,我还没有对我的 mule_config.xml 中的“会话”做任何事情。因此,AFAIK,两个流程都将在同一个会话下。

现在,在同一个会话下有多个流是一种好习惯,还是我需要为每个流设置一个不同的会话(如果可能的话)?上述两种流程在同一会话下运行的方法的优缺点是什么。

4

1 回答 1

4

首先要记住,Mule 中的会话与 Web 容器中的会话不同:它只是一个可以跨越多个流的特定消息属性范围。

考虑以下:

<flow name="SessionDemo">
    <vm:inbound-endpoint path="test.in" />
    <set-session-variable variableName="mySessionVar"
        value="myValue" />
    <vm:outbound-endpoint path="next.in" />
</flow>
<flow name="SessionPropagationDemo">
    <vm:inbound-endpoint path="next.in" />
    <logger message="#[sessionVars.mySessionVar]"/>
</flow>

如果您运行此示例,您将看到mySessionVar会话范围的消息属性(也称为会话变量)已通过 VM 队列传播到下一个流。

如果您需要跨多个流携带消息属性,使用会话变量将使您的生活更轻松,否则每次通过传输“跳跃”到下一个流时,您必须手动将属性从入站复制到出站范围(这不会'不适用于flow-ref“啤酒花”)。

于 2013-01-07T18:54:43.260 回答