O papel dos escritores de lotes fáceis é gravar registros para afundar
Coletor de dados suportados
- Com referência à figura
de forma oficial
Notas e dicas
- Processe transações de banco de dados em JdbcRecordWriter. Após cada lote, uma transação é criada e confirmada / revertida.
- O JpaRecordWriter espera um objeto Java como entrada, não um Registro. Antes de passar o registro para, certifique-se de mapear o registro para o seu tipo de objeto de domínio JpaRecordWriter. Processe transações do banco de dados no JpaRecordWriter. Após cada lote, uma transação é criada e confirmada / revertida.
- O HibernateRecordWriter espera um objeto Java como entrada, não um Registro. Antes de passar o registro para, certifique-se de mapear o registro para o seu objeto de domínio, digite HibernateRecordWriter. O autor lida com transações do banco de dados. Após cada lote, uma transação é criada e confirmada / revertida.
Falha no processamento de gravação de dados
Às vezes, o receptor de dados pode estar temporariamente indisponível. Nesse caso, o gravador de registros não poderá gravar dados e o trabalho será abortado. O RetryableRecordWriter pode ser usado para gravar dados no RetryPolicy usando o delegado Repetir RecordWriter.
Job job = new JobBuilder ()
. writer ( new RetryableRecordWriter ( unreliableDataSinkWriter, new RetryPolicy ( 5, 1, SECONDS))))
. Construir();
Isso fará com que o gravador tente novamente até 5 vezes, aguardando um segundo entre cada tentativa. Se o receptor de dados não puder ser acessado após 5 tentativas, o trabalho será abortado.
Verificação em lote
Após a ativação, se ocorrer uma exceção durante o processo de gravação em lote, uma varredura em lote será iniciada. Tente escrever os registros um por um como um singleton. Dessa forma, você pode pular o registro errado e continuar executando o trabalho, em vez de falhar em todo o trabalho no primeiro lote com falha.
Esse recurso é usado em conjunto com o gravador de transações para executar com êxito operações de gravação com falha sem efeitos colaterais. No entanto, uma limitação conhecida é que, quando usado com um gravador não transacional, um item pode ser gravado duas vezes (por exemplo, no caso de um gravador de arquivo, o fluxo de saída é atualizado antes que ocorra uma exceção). Para evitar isso, você deve executar uma operação de reversão manual no método BatchListener # onBatchWritingException.