FlatFileItemWriter в удаленном чанкинге - PullRequest
0 голосов
/ 17 апреля 2019

Я ищу примеры реализации подпружиненного удаленного фрагментирования с помощью FlatFileItemWriter в Worker.

Я использую RabbitMQ, SpringBatch, Spring Integration.

С

<spring-cloud.version>Greenwich.SR1</spring-cloud.version>

Когда я попытался, я получил org.springframework.batch.integration.chunk.AsynchronousFailureException: сбой или прерывание, обнаруженное в обработчике:> org.springframework.batch.item.WriterNotOpenException: модуль записи должен быть открыт, прежде чем его можно записать в Исключение.


        @Bean
    public FlatFileItemWriter<MyResponse> flatWriter() {
        FlatFileItemWriter<MyResponse> writer = new FlatFileItemWriter<>();

        writer.setResource(new FileSystemResource("writer_queue_remote.csv"));
        writer.setAppendAllowed(true);

        writer.setHeaderCallback(new FlatFileHeaderCallback() {

            @Override
            public void writeHeader(Writer writer) throws IOException {
                List<String> headersList = Arrays.asList("id","name");
                String headers = headersList.stream().collect(Collectors.joining(","));
                writer.write(headers);
            }
        });

        writer.setLineAggregator(new DelimitedLineAggregator<MyResponse>() {
            {
                setDelimiter(",");
                setFieldExtractor(new MyFieldExtractor());
            }
        });

        return writer;
    }


    // Worker Integrationflow
    @Bean
    public IntegrationFlow chunkIntegrationFlow() {
        // TODO Auto generated method stub
        return this.remoteChunkingWorkerBuilder.itemProcessor(chunkProcessor()).itemWriter(flatWriter())
                .inputChannel(requestChannel()).outputChannel(repliesChannel()).build();
    }

Я записываю объект "MyResponse" в файл.

Пожалуйста, помогите мне, указав пример реализации или направьте меня, чтобы исправить это исключение.(Причиной исключения является ItemWriter.OutputState не инициализирован)

1 Ответ

0 голосов
/ 17 апреля 2019

В удаленной настройке чанкования на рабочей стороне нет шага Spring Batch, который бы обрабатывал жизненный цикл автора (открытие / закрытие и т. Д.). Поэтому вам нужно открыть писатель, прежде чем использовать его в вашем chunkIntegrationFlow.

...