栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用反应堆射击并忘记

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用反应堆射击并忘记

1,如果你的 发射后不管 已经是异步返回
Mono
/
Flux

public Flux<Data> search(SearchRequest request){    return searchService.search(request)  .collectList()  .doonNext(data -> doThisAsync(data).subscribe())  // add error logging here or inside doThisAsync  .flatMapMany(Flux::fromIterable);}public Mono<Void> doThisAsync(List<Data> data) {    //do some async/non-blocking processing here like calling WebClient}

2,如果您 的一劳永逸 确实阻止了I / O

public Flux<Data> search(SearchRequest request){    return searchService.search(request)  .collectList()  .doonNext(data -> Mono.fromRunnable(() -> doThisAsync(data))  .subscribeOn(Schedulers.elastic())  // delegate to proper thread to not block main flow  .subscribe())  // add error logging here or inside doThisAsync  .flatMapMany(Flux::fromIterable);}public void doThisAsync(List<Data> data) {    //do some blocking I/O on calling thread}

请注意,在上述两种情况下,您都会失去反压支持。如果由于

doAsyncThis
某种原因减慢了速度,那么数据生产者将不在乎并继续生产项目。这是“火与火”机制的自然结果。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号