1

我使用骡子 3.3.1 CE。

当消息有效负载为 SUCCESS 字符串时,我有一个从备份目录读取 *.json 文件的场景。

这是我的骡子配置:


<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>

当应用程序部署在服务器中时出现以下错误

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

根据错误,我了解 file:inbound-endpoint 位于错误的位置。

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

4

1 回答 1

1

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

有很多可行的选择可以解决您的问题,但我推荐的两个是:

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