收到事件后调用mule 3文件传输

时间:2013-06-18 15:03:48

标签: mule

我使用mule 3.3.1 CE。

当消息有效内容为SUCCESS字符串时,我有从备份目录中读取* .json文件的方案。

这是我的mule-config:


<flow>
    ...
    <flow-ref name="auditTrailFlow"/>
    <flow-ref name="auditTrailBackupFlow"/>
</flow>

<sub-flow name="auditTrailBackupFlow">
 /// returns SUCCESS
</sub-flow>

<sub-flow name="auditTrailBackupFlow">
            <description>
                Resending backup AuditTrail JSON's objects to db
            </description>
            <choice>
                <when expression="#[message.payload == SUCCESS]">
                    <logger level="INFO" message="Checking audittrail backup directory"/>
                    <file:inbound-endpoint connector-ref="in" path="${audittrail.backup.dir}">
                        <file:filename-wildcard-filter pattern="*.json" caseSensitive="true" />
                    </file:inbound-endpoint>
                    <not-filter>
                        <filter ref="nullPayloadFilter"/>
                    </not-filter>
                    <json:json-to-object-transformer targetClass="com.company.AuditTrail"/>
                    // updates db
                </when>
                <otherwise>
                    // do something
                </otherwise>
            </choice>
</sub-flow>

当app在服务器中部署时,我收到以下错误

Invalid content was found starting with element 'file:inbound-endpoint'.

根据错误,我理解该文件:inbound-endpoint位于错误的位置。

我的问题是,当mule消息有效负载成功后,如何告诉mule文件传输读取文件。

1 个答案:

答案 0 :(得分:1)

您可以在尝试执行时在流中放置入站端点。入站端点是消息源,因此必须放在流的开头。

有许多可行的方案可以解决您的问题,但我建议的两个方法是:

  • 将文件入站端点放入已初始化的流中,并使用此处显示的方法启动/停止此流程:https://stackoverflow.com/a/15389312/387927问题是您需要找到一个停止流程的好时机,也许通过让另一个流程充当目录上的观察者。
  • 使用自定义组件(Java或脚本化)替换上述配置中的文件入站端点,该组件以编程方式将MuleClient用于目标目录中的request()文件,并将这些文件分发给负责处理它们的另一个流。