我有3个S3存储桶:
“input-files”存储桶包含一个CSV文件列表,我想一次从存储桶中获取每个输入文件(文件名格式:filename-timestamp)并将其移动到“正在进行中”的存储桶当工作流程完成时,我想将其移动到“已处理文件”存储桶。出错时,所有文件处理都需要停止。
在我的流程中,我可以获取csv文件的内容,但是没有对文件名的引用,因此不确定如何实现上述内容,因为我无法指定需要移动的文件。
如何实施上述处理步骤?
XML流程:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.8.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd">
<flow name="CsvToMongo" >
<poll doc:name="Poll">
<s3:get-object-content config-ref="Amazon_S3__Configuration" bucketName="test-file-bucket" key="input-files/TestData.csv" mimeType="application/csv" doc:name="Amazon S3"/>
</poll>
<object-to-string-transformer encoding="UTF-8" mimeType="application/csv" doc:name="Object to String"/>
<logger message="#['**** Start writing CSV to database...']" level="INFO" doc:name="Logger: Start Process"/>
</flow>
</mule>
正在使用的软件: Anypoint Studio 6.2 骡子3.8.1
由于
答案 0 :(得分:1)
我最近使用的一种方法是配置Amazon Simple Queue Service (SQS)队列以从存储桶接收S3事件。 (配置存储桶以将事件发送到SQS队列)。
然后在我的Mule流程中,我的输入源是SQS poller。
S3 event is well documented at AWS的结构,是一个JSON字符串(convert it to JSON object to use it),包含识别实际文件名所需的所有相关信息。
它工作得非常好。