当前位置: 首页 > 知识库问答 >
问题:

在下一个Flux元素上重试并省略成功的元素

陆宏壮
2023-03-14

一点背景。

我试图使用反应性编程,以便能够从其他服务下载文件。诀窍在于,如果连接失败或Flux元素失败(任何东西),我希望在Flux上重试多次,但一旦能够掌握它,我希望从一开始就恢复而不处理元素。

我的意思是,由于连接失败,在100个可能的元素中,我只得到了56个元素(假设它是。jpg中的一个图像)。一旦我成功地重试,我想恢复第57个元素,这样我就不必处理它并再次执行GET从头开始。

共有1个答案

颜安宁
2023-03-14

您需要在每个订阅服务器的基础上保留一些状态(至少是要请求的范围的开始)。这必须在retry的上游完成,以便每次重试都重新计算范围。同时,状态应该是原子可更新的,并且在retry的下游可见(出于更新目的)。我假设您使用的是WebClient:

  • flatmap可用于创建范围状态可见的范围
  • 在lambda中,可以使用atomiclong作为状态
  • 再次在flatmap lambda中,将webclient调用包装在flux.defer中,以确保延迟创建请求,并重新计算生成适当头的状态(从atomiclong)
  • 读取
  • defer
  • 之后追加 retry
  • 一旦接收并处理了每个片段(例如,在doonnext)
  • 之后,根据需要更新 atomiclong
 类似资料:
  • 我是Spring Reactive Project的新手。使用中出现问题。我有两个Flux,一个有更多元素,例如 还有人喜欢 如何获取bigFlux中未出现在smallFlux中的元素?我不知道该用哪个接线员。 我尝试过: 但这并不明智,我通过复杂的操作获得了smallFlux,例如查询数据库、平面图操作。这样,bigFlux中有多少元素,这些操作将重复多少次。 事实上,小通量是通过这种方式获得的

  • 问题内容: 我已经看过其他几个问题,但似乎无法弄清楚它们中的任何一个,所以这是我的问题,我想要一个div或span,当您将鼠标悬停在它上面时,就会出现一个区域,就像是一滴水下。 例如我有一个div,我想将鼠标悬停在上面,并让它显示有关我悬停的项目的一些信息 但这似乎不起作用,我不知道为什么…,如果有办法在CSS中做到这一点,我想知道,但是我想要任何和所有建议。 问题答案: 仅当隐藏的div是用于悬

  • 问题内容: 如何使用JavaScript获取HTML中的下一个元素? 假设我有3个s,并且在JavaScript代码中获得了对1的引用,我想获取哪个是下一个,哪个是前一个。 问题答案: 在纯JavaScript中,我的想法是,您首先必须将它们归类到一个集合中。 因此,基本上,通过selectionDiv遍历集合以查找其索引,然后显然是-1 =上一个+1 =下一个在范围内 但是请注意,正如我所说的那

  • 是否有任何方法可以写入JSON路径,以基于前一个元素获取数组中下一个元素的值? JSON: 预期: 路径:$[0][如果匹配搜索文本]下一个|上一个 搜索文本:text 1输出(获取下一个值):值12输出(获取前一个值):值11 Searchtext:text2输出(获取下一个值):value22输出(获取上一个值):value21 我在用https://github.com/jayway/Jso

  • 问题内容: 这个问题已经在这里有了答案 : 悬停一个元素时如何影响其他元素 (6个答案) 5年前关闭。 我希望它像这样简单,但是我知道不是这样的: 因此,当您将鼠标悬停在img上时,它将#thisElement的不透明度更改为30%,并将图像的不透明度更改为100%。有没有办法仅使用CSS实际执行此操作? 这就是HTML 这是CSS: 问题答案: 使用CSS的唯一方法是,要影响的元素是后代还是相邻

  • 为简单起见,我有2个字符串列表,我需要将字符串连接到一个列表中并创建另一个列表。例如—— 我想要输出为 我可以使用正则for循环来实现这一点。但不知道如何继续使用java8 我试图让自己思考nJava8:-)