ฉันมีวิธีการ
@Service
public class MyService {
public Mono<Integer> processData() {
... // very long reactive operation
}
}
อยู่ในที่ปกติโครงการไหลเวียนผมเรียกสิ่งนี้วิธีการ asynchronously ผ่านทาง Kafka เหตุการณ์.
สำหรับการทดสอบจุดประสงค์ฉันต้องการจะ เปิดโปงเรื่องสกปรกที่พววิธีการเป็นบริการเว็บแต่งวิธีควรจะเปิดเผยเป็น asynchronous:คืนเดียวที่ HTTP รหัส 200 โอเค("การร้องขอยอมรับ")และต่อข้อมูลการประมวลผลอยู่เบื้องหลัง
มันโอเค(=มันไม่มีการเสียเวลา-ผลข้างเคียง)เพื่อเรียก Mono#subscribe()
และกลับมาจาก controller วิธีการ?
@RestController
@RequiredArgsConstructor
public class MyController {
private final MyService service;
@GetMapping
public void processData() {
service.processData()
.subscribeOn(Schedulers.boundedElastic())
.subscribe();
}
}
หรือเป็นมันดีกว่าต้องทำมันอย่างนี้(อยู่ที่นี่ฉันสับสนองโดยคำเตือนจาก IntelliJ บางทีเหมือนกับ 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();
}
หรือบางอย่าง?