Bir yöntemi var
@Service
public class MyService {
public Mono<Integer> processData() {
... // very long reactive operation
}
}
Normal program akışında, bu yöntemi bir Kafka olayı aracılığıyla eşzamansız olarak çağırıyorum.
Test amacıyla yöntemi bir web hizmeti olarak göstermem gerekiyor, ancak yöntem eşzamansız olarak gösterilmelidir: yalnızca HTTP kodu 200 Tamam döndürüyor ("istek kabul edildi") ve arka planda veri işlemeye devam ediyor.
Sadece aramak için Tamam mı (= istenmeyen yan etkileri yok mu) Mono#subscribe()
ve denetleyici yönteminden geri dönmek mi?
@RestController
@RequiredArgsConstructor
public class MyController {
private final MyService service;
@GetMapping
public void processData() {
service.processData()
.subscribeOn(Schedulers.boundedElastic())
.subscribe();
}
}
Yoksa bunu böyle yapmak daha mı iyi (burada Intellij'den gelen uyarıyla kafam karıştı, belki de aynı https://youtrack.jetbrains.com/issue/IDEA-276018 ?):
public Mono<Void> processData() {
service.processData()
.subscribeOn(Schedulers.boundedElastic())
.subscribe(); // IntelliJ complains "Inappropriate 'subscribe' call" but I think it's a false alarm in my case(?)
return Mono.empty();
}
Ya da başka bir çözüm?