Bonjour à tous,
j'ai actuellement un batch possédant 2 jobs
Le soucis est lorsque j'appelle soit le job n°1, soit le job n°2, en ligne de commande avec --spring.batch.job.names=job1Name
toutes mes classes implémentant Itemreader sont exécutées à l'initialisation (celles utilisées pour le job n°1 et celle du job n°2)
si je mets des logs j'obtiens ceci :
avec ce code simplifié :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 start reader 1 start reader 2 start reader 3 start reader 4
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 @Configuration public class Job1Class { ... @Bean public @NonNull Job job1(){ return jobBuilder.get("job1Name") .start(step1()) .next(step2()) .build(); } @Bean public @NonNull Step step1() { return stepBuilder.get("step1") .<MyClass, MyClass>chunk(1024) .reader(reader1()) .processor(processor1()) .writer(writer1()) .build(); } @Bean public @NonNull Step step2() { return stepBuilder.get("step2") .<MyClass, MyClass>chunk(1024) .reader(reader2()) .processor(processor2()) .writer(writer2()) .build(); } @Bean public @NonNull ItemReader<MyClass> reader1() { log.debug("start reader 1"); //code } @Bean public @NonNull ItemReader<MyClass> reader2() { log.debug("start reader 2"); //code } ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 @Configuration public class Job2Class { ... @Bean public @NonNull Job job2(){ return jobBuilder.get("job2Name") .start(step3()) .next(step4()) .build(); } @Bean public @NonNull Step step3() { return stepBuilder.get("step3") .<MyClass, MyClass>chunk(1024) .reader(reader3()) .processor(processor3()) .writer(writer3()) .build(); } @Bean public @NonNull Step step4() { return stepBuilder.get("step4") .<MyClass, MyClass>chunk(1024) .reader(reader4()) .processor(processor4()) .writer(writer4()) .build(); } @Bean public @NonNull ItemReader<MyClass> reader3() { log.debug("start reader 3"); //code } @Bean public @NonNull ItemReader<MyClass> reader4() { log.debug("start reader 4"); //code } ... }
Que faut-il faire pour qu'il n'y ai que reader1 et reader 2 qui s'initialise quand je lance le job N°1
et donc que reader 3 et reader 4 pour le job N°2 ?
Merci d'avance de votre aide![]()
Partager