Saltar al contenido

¿Spring-Batch sin persistir metadatos en la base de datos?

Si te encuentras con alguna parte que te causa duda puedes dejarlo en la sección de comentarios y te responderemos rápidamente.

Solución:

Simplemente cree una configuración sin fuente de datos para la configuración por lotes:

@Configuration
@EnableAutoConfiguration
@EnableBatchProcessing
public class BatchConfiguration extends DefaultBatchConfigurer 

    @Override
    public void setDataSource(DataSource dataSource) 
        // override to do not set datasource even if a datasource exist.
        // initialize will use a Map based JobRepository (instead of database)
    


Inicializará JobRepository y JobExplorer con una implementación basada en un mapa de memoria. https://github.com/spring-projects/spring-batch/blob/342d27bc1ed83312bdcd9c0cb30510f4c469e47d/spring-batch-core/src/main/java/org/springframework/batch/core/configuration/annotation/DefaultBatchConfigurer.java#L84

y también puede usar su fuente de datos de producción, incluso si se configura automáticamente con Spring Boot.

Quiero ejecutarlo sin ninguna persistencia de base de datos.

Puedes usar MapJobRepositoryFactoryBean y ResourcelessTransactionManager

configuración de muestra:




    



    

Para Spring 4.X, la configuración basada en anotaciones sería la siguiente:

@Bean
public PlatformTransactionManager getTransactionManager() 
    return new ResourcelessTransactionManager();


@Bean
public JobRepository getJobRepo() 
    return new MapJobRepositoryFactoryBean(getTransactionManager()).getObject();

Después de ajustar la respuesta de @Braj, mi configuración de trabajo se ve de la siguiente manera:

@Bean
public ResourcelessTransactionManager transactionManager() 
    return new ResourcelessTransactionManager();


@Bean
public JobRepository jobRepository(ResourcelessTransactionManager transactionManager) throws Exception 
    MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean = new MapJobRepositoryFactoryBean(transactionManager);
    mapJobRepositoryFactoryBean.setTransactionManager(transactionManager);
    return mapJobRepositoryFactoryBean.getObject();


@Bean
public SimpleJobLauncher jobLauncher(JobRepository jobRepository) 
    SimpleJobLauncher simpleJobLauncher = new SimpleJobLauncher();
    simpleJobLauncher.setJobRepository(jobRepository);
    return simpleJobLauncher;

Valoraciones y reseñas

Tienes la opción de confirmar nuestra tarea mostrando un comentario y puntuándolo te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *