मैं एक विधि है
@Service
public class MyService {
public Mono<Integer> processData() {
... // very long reactive operation
}
}
सामान्य में कार्यक्रम का प्रवाह है, मैं इस विधि कॉल एसिंक्रोनस रूप से के माध्यम से एक काफ्का की घटना है ।
परीक्षण प्रयोजनों के लिए मैं करने के लिए की जरूरत बेनकाब विधि के रूप में एक वेब सेवा है, लेकिन इस पद्धति को उजागर किया जाना चाहिए के रूप में अतुल्यकालिक: लौटने केवल HTTP कोड 200 ठीक ("अनुरोध स्वीकार किए जाते हैं") और सतत डेटा प्रसंस्करण पृष्ठभूमि में.
यह ठीक है (= यह नहीं करता है किसी भी अवांछित साइड इफेक्ट) सिर्फ कॉल करने के लिए Mono#subscribe()
और वापसी नियंत्रक से विधि है?
@RestController
@RequiredArgsConstructor
public class MyController {
private final MyService service;
@GetMapping
public void processData() {
service.processData()
.subscribeOn(Schedulers.boundedElastic())
.subscribe();
}
}
या यह बेहतर करने के लिए इसे इस तरह से (यहाँ मैं उलझन में हूँ से चेतावनी से इंटेलीजे, शायद के रूप में एक ही 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();
}
या कुछ अन्य समाधान है?