我有Mule流,它从输入目录读取文件(csv)并将记录插入数据库。我想知道如何将此文件移动到“失败”目录,并在流程中发生错误时发送通知电子邮件。目前我的流程如下:
<flow name="mainFlow" doc:name="mainFlow" processingStrategy="synchronous">
<file:inbound-endpoint path="src/test/input" moveToDirectory="src/test/backup" responseTimeout="10000" doc:name="input-file" connector-ref="inputFile"/>
<READS FILE INTO DATABASE>
<catch-exception-strategy doc:name="Catch Exception Strategy">
<file:outbound-endpoint path="src/test/error" doc:name="error-output-file"/>
</catch-exception-strategy>
</flow>
理想情况下,当文件移动到“失败”目录时,它与原始文件具有相同的名称,并在开头附加“错误”。我还没有尝试过电子邮件通知,因为我不确定如何处理这个问题。任何帮助/指导都将非常感谢,提前感谢!
答案 0 :(得分:1)
原始文件名在邮件属性中可用,因此您可以在文件出站中使用outputPattern="error#[header:originalFilename]"
。如果将文件内容读入数据库的方法丢失原始文件内容,则可以设置变量以在读取文件后立即保存内容,然后在将异常写入异常的错误目录之前将变量设置为有效内容处理程序。
更新:对于电子邮件部分,您有几个选项:基本上您只需将电子邮件内容设置为有效负载,然后使用Mule SMTP outbound或某些电子邮件服务(如Mailgun that offers a simple REST API)发送。如果您只有合适的电子邮件提供商,这真的很简单。