我有一个spring集成应用程序,其中使用S3 -outbound-S3-adapter将文件从一个文件夹路由到出站通道桶。如果文件处理成功,则文件将被移动到对应的target-bucket中。如果有错误,文件通过错误通道移动到错误存储桶中。
必须在包含以下详细信息的文本文件中生成每日统计报告。
处理的文件总数:成功总数:错误总数:
我想知道如何获得成功处理的文件数/错误。有没有办法达到这个要求。
任何建议或例子都会有所帮助。
已阅读文档中的DefaultMessageChannelMetrics和千分尺集成。我不确定它是否能满足我的要求。
有单独的网关和适配器来处理成功和错误文件。
成功:
<int-aws:s3-outbound-gateway id="s3FileMover"
request-channel="filesOutS3GateWay"
reply-channel="filesOutS3ChainChannel"
transfer-manager="transferManager"
bucket-expression = "headers.TARGET_PATH"
key-expression="headers.file_name"
command="UPLOAD">
<int-aws:request-handler-advice-chain>
<ref bean="retryAdvice" />
</int-aws:request-handler-advice-chain>
</int-aws:s3-outbound-gateway>错误:
<int-aws:s3-outbound-channel-adapter id="filesErrorS3Mover"
channel="filesErrorS3MoverChannel"
transfer-manager="transferManager"
bucket="${aws.s3.error.bucket}"
key-expression="headers.TARGET + '/' + headers.file_name"
upload-metadata-provider = "fileMetaDataProvider"
command="UPLOAD">
<int-aws:request-handler-advice-chain>
<bean class="org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice">
<property name="onSuccessExpressionString" value="payload.delete()"/>
</bean>
</int-aws:request-handler-advice-chain>发布于 2018-11-16 23:22:39
您可以直接在消息通道上查询和重置MessageChannelMetrics。
getSendCount();
reset();所有标准消息通道都实现该接口,因此只需按如下方式注入通道...
@Autowired
private MessageChannelMetrics filesOutS3GateWay;
private int getCount() {
return this.filesOutS3GateWay.getSendCount();
}https://stackoverflow.com/questions/53338279
复制相似问题