"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मुख्य प्रतिक्रिया को अवरुद्ध किए बिना स्प्रिंग वेबफ्लक्स में एक अतुल्यकालिक कार्य कैसे चलाएं?

मुख्य प्रतिक्रिया को अवरुद्ध किए बिना स्प्रिंग वेबफ्लक्स में एक अतुल्यकालिक कार्य कैसे चलाएं?

2024-08-07 को प्रकाशित
ब्राउज़ करें:436

How to Run an Asynchronous Task in Spring WebFlux Without Blocking the Main Response?

मैं स्प्रिंग वेबफ्लक्स के साथ काम कर रहा हूं और मुझे एक विधि के हिस्से के रूप में एक अतुल्यकालिक कार्य करने की ज़रूरत है जो उपयोगकर्ता की मुख्य प्रतिक्रिया को अवरुद्ध नहीं करना चाहिए। विशेष रूप से, मैं मुख्य कार्य पूरा करने के बाद एक अतुल्यकालिक विधि को कॉल करना चाहता हूं, लेकिन प्रतिक्रिया में देरी किए बिना।

मैं जो हासिल करने की कोशिश कर रहा हूं उसका एक सरलीकृत संस्करण यहां दिया गया है:

public Mono publishPackage(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 पृष्ठभूमि में चलता रहे?

विज्ञप्ति वक्तव्य इस लेख को इस पर पुन: प्रस्तुत किया गया है: https://dev.to/subrata71/how-to-run-an-asynchronous-task-nask-n-spring-webflux-without-blocking-the-main-response-57d7?1 किसी भी उल्लंघन, कृपया हटाने के लिए [email protected] से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3