मैं स्प्रिंग वेबफ्लक्स के साथ काम कर रहा हूं और मुझे एक विधि के हिस्से के रूप में एक अतुल्यकालिक कार्य करने की ज़रूरत है जो उपयोगकर्ता की मुख्य प्रतिक्रिया को अवरुद्ध नहीं करना चाहिए। विशेष रूप से, मैं मुख्य कार्य पूरा करने के बाद एक अतुल्यकालिक विधि को कॉल करना चाहता हूं, लेकिन प्रतिक्रिया में देरी किए बिना।
मैं जो हासिल करने की कोशिश कर रहा हूं उसका एक सरलीकृत संस्करण यहां दिया गया है:
public MonopublishPackage(RequestDTO requestDTO) { return publishPackageService.doSomething(requestDTO) .flatMap(responseDTO -> doSomethingInAsync(requestDTO, responseDTO) .thenReturn(responseDTO) ); } // Method that simulates an asynchronous task with a 5-second delay public Mono doSomethingInAsync(RequestDTO requestDTO, ResponseDTO responseDTO) { return Mono.delay(Duration.ofSeconds(5)) .then(); // Converts the delayed Mono to Mono }
इस कॉल के पूरा होने के बाद, मैं doSomethingInAsync(requestDTO, recruitmentDTO) को एसिंक्रोनस रूप से निष्पादित करना चाहता हूं।
DoSomethingInAsync विधि गैर-अवरुद्ध होनी चाहिए और मुख्य प्रतिक्रिया में देरी नहीं होनी चाहिए।
संकट:
doSomethingInAsync विधि निष्पादित की जा रही है, लेकिन ऐसा लगता है कि यह प्रतिक्रिया को अवरुद्ध कर सकता है या इच्छित के अनुसार अतुल्यकालिक रूप से नहीं चल रहा है। मैं यह कैसे सुनिश्चित कर सकता हूं कि doSomethingInAsync एसिंक्रोनस रूप से चलता है और उपयोगकर्ता की प्रतिक्रिया को अवरुद्ध नहीं करता है?
विवरण:
publishPackageService.doSomething(requestDTO): एक मोनो लौटाता है।
doSomethingInAsync(requestDTO, प्रतिक्रियाDTO): एक अतुल्यकालिक विधि है जिसे मैं प्रतिक्रिया को अवरुद्ध किए बिना चलाना चाहता हूं।
प्रशन:
मैं यह कैसे सुनिश्चित कर सकता हूं कि प्रतिक्रिया को अवरुद्ध किए बिना doSomethingInAsync पृष्ठभूमि में चलता रहे?
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3