使用Spring Integration移至GCP存储后如何从本地目录中删除文件

时间:2018-11-29 08:32:41

标签: spring spring-boot google-cloud-platform spring-integration integration

我有这段代码,当文件放置在本地存储区中时,它可以成功地将文件从本地目录移动到GCP存储桶中,但是在移动到GCP之后,我需要将其删除。

>>> from cryptography.hazmat.primitives import hashes
>>> from cryptography.hazmat.primitives.asymmetric import padding
>>> message = b"A message I want to sign"
>>> signature = private_key.sign(
...     message,
...     padding.PSS(
...         mgf=padding.MGF1(hashes.SHA256()),
...         salt_length=padding.PSS.MAX_LENGTH
...     ),
...     hashes.SHA256()
... )

1 个答案:

答案 0 :(得分:3)

您需要在@ServiceActivator(inputChannel = "new-file-channel")上添加对adviceChain的引用,ExpressionEvaluatingRequestHandlerAdvice会执行onSuccessExpression来删除该本地文件。

类似这样的东西:

    @Bean
    public Advice removeFileAdvice() {
        ExpressionEvaluatingRequestHandlerAdvice advice = new ExpressionEvaluatingRequestHandlerAdvice();
        advice.setOnSuccessExpressionString("payload.delete()");
        advice.setSuccessChannel(myHandlerSuccessChannel());
        return advice;
    }

它将起作用,因为您的有效负载是java.io.File,并且具有该delete()方法。

比您在开始时说的要多:

@ServiceActivator(inputChannel = "new-file-channel", adviceChain="removeFileAdvice")