मेरे पास लागू करने के लिए निम्नलिखित परिदृश्य है। उपयोगकर्ता आईडी द्वारा नौकरियों की सूची प्राप्त करें, नौकरियों को पुनरावृत्त करें और फिर विशेषता द्वारा खाता प्रविष्टि प्राप्त करें और अंत में खाते में अपडेट करें।
विधि परिभाषा
Mono<Void> execute(List<String> users)
जॉब्स दाओ मोनो लौटा रहा है<सूची>
Mono<List<JobInfo>> getJobsByUser(String user)
class JobInfo {
String user;
String account;
}
खाता प्राप्त करना मोनो सूची लौटा रहा है,
Mono<List<Account>> getAccounts(String account)
मैं मोनो नो ब्लॉकिंग तरीके का उपयोग करके ऐसा करने के लिए संघर्ष कर रहा हूं। मैंने ब्लॉक का उपयोग करके ऐसा करने की कोशिश की लेकिन हो रही है
block()/blockFirst()/blockLast() are blocking, which is not supported in thread reactor-http-nio-
public Mono<Void> execute(List<String> users) {
users.forEach(user -> {
jobDao.getJobsByUser(user).block().stream().forEach(job -> {
accountDam.getAccounts(job.getAccount()).block().forEach(acc -> {
// update account
});
});
});
return Mono.empty().then();
}
1 उत्तर
जहाँ तक मैं समझ सकता हूँ, आपको निम्नलिखित प्रवाह की आवश्यकता है:
public Mono<Void> execute(List<String> users) {
return Flux.fromIterable(users)
.flatMap(user -> getJobsByUser(user))
.flatMapIterable(jobs -> jobs)
.flatMap(job -> accountDam.getAccounts(job.getAccount()))
.flatMapIterable(accounts -> accounts)
.flatMap(account -> updateAccount(account))
.then();
}
संबंधित सवाल
नए सवाल
java
जावा एक उच्च स्तरीय प्रोग्रामिंग भाषा है। इस टैग का उपयोग तब करें जब आपको भाषा का उपयोग करने या समझने में समस्या हो। इस टैग का उपयोग शायद ही कभी किया जाता है और इसका उपयोग अक्सर [वसंत], [वसंत-बूट], [जकार्ता-ई], [Android], [javafx], [हडूप], [श्रेणी] और [मावेन] के साथ किया जाता है।
I tried to use Flux and iterate users to get accounts. But method is finish executing before running this.
कोड कहां है? हम आपके लिए कोड नहीं लिखेंगे और आपका काम नहीं करेंगे, क्या उसमें सीखने का अनुभव था?block()
पद्धति के उपयोग के बिना इसे फिर से लागू करने का प्रयास करें। यह आपकी मदद कर सकता है: projectreactor.io/docs/core/release/reference/ #कौन सा-ऑपरेटर