У адаптера потокового канала нет локальной копии удаленного файла, поэтому мы не можем угадать, что и как вы собираетесь делать с InputStream
для удаленного файла. Вот почему на S3StreamingMessageSource
нет setDeleteRemoteFiles()
.
Я вижу, вы делаете что-то вроде этого S3ObjectInputStreamToStringTransformer
. Подскажите, пожалуйста, в чем причина такого нестандартного трансформатора. Уже существует StreamTransformer
, и с его опцией charset
InputStream
для удаленного файла будет преобразовано в строку:
/**
* Construct an instance with the charset to convert the stream to a
* String; if null a {@code byte[]} will be produced instead.
* @param charset the charset.
*/
public StreamTransformer(String charset) {
Также: необходимо иметь в виду, что StaticMessageHeaderAccessor.getCloseableResource(message)
должен быть закрытым после чтения InputStream
, чтобы избежать утечки ресурсов.
Вероятно, вместо .channel("nullChannel")
вам следует подумать об использовании handle()
для вызова AmazonS3.deleteObject(String bucketName, String key)
API. bucketName
сохраняется в FileHeaders.REMOTE_DIRECTORY
и key
в заголовках FileHeaders.REMOTE_FILE
соответственно.