Spring Batch File Writer для прямой записи в хранилище Amazon S3 без PutObjectRequest - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь загрузить файл в Amazon S3.Вместо загрузки я хочу прочитать данные из базы данных с помощью Spring Batch и записать файл непосредственно в хранилище s3.Есть ли в любом случае, мы можем сделать это?

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Проблема в том, что OutputStream будет записывать только последние Элементы списка , отправленные на шаге ... Я думаю, что выможет потребоваться записать временный файл в файловой системе, а затем отправить весь файл в отдельном тасклете

См. этот пример: https://github.com/TerrenceMiao/AWS/blob/master/dynamodb-java/src/main/java/org/paradise/microservice/userpreference/service/writer/CSVFileWriter.java

0 голосов
/ 01 марта 2019

Spring Cloud AWS добавляет поддержку сервиса Amazon S3 для загрузки и записи ресурсов с помощью загрузчика ресурсов и протокола s3.Как только вы настроили загрузчик ресурсов AWS , вы можете написать собственный модуль записи Spring Batch, например:

import java.io.OutputStream;
import java.util.List;

import org.springframework.batch.item.ItemWriter;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.WritableResource;

public class AwsS3ItemWriter implements ItemWriter<String> {

    private ResourceLoader resourceLoader;

    private WritableResource resource;

    public AwsS3ItemWriter(ResourceLoader resourceLoader, String resource) {
        this.resourceLoader = resourceLoader;
        this.resource = (WritableResource) this.resourceLoader.getResource(resource);
    }

    @Override
    public void write(List<? extends String> items) throws Exception {
        try (OutputStream outputStream = resource.getOutputStream()) {
            for (String item : items) {
                outputStream.write(item.getBytes());
            }
        }
    }
}

. Затем вы сможете использовать этот модуль записи с ресурсом S3, таким как * 1008.*.

Есть ли в любом случае, мы можем сделать это?

Обратите внимание, что я не компилировал / тестировал предыдущий код.Я просто хотел дать вам отправную точку, как это сделать.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...