You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mutiny的Uni中链式调用多个onFailure操作符?

Mutiny Uni 故障处理的简洁实现方案

你可以利用Mutiny中UniOnFailure的链式调用特性,把所有故障相关的操作放在同一个onFailure()块里,避免重复调用onFailure():

someUni
    .onFailure()
        .invoke(e -> log.info("Error {}", e.getMessage()))
        .retry().withBackOff(Duration.ofMillis(100), Duration.ofSeconds(5)).atMost(5)
        .invoke(() -> log.info("Retries exhausted, I'm going to give up."))
        .recoverWithItem(Response.ok().build());

逻辑说明:

  • 当Uni首次抛出故障时,先执行invoke记录错误日志;
  • 紧接着触发退避重试逻辑,最多重试5次;
  • 如果5次重试全部失败,会进入后续的invoke记录重试耗尽的日志;
  • 最后通过recoverWithItem恢复为指定的正常返回值,终结故障流。

这种写法的核心是:onFailure()返回的UniOnFailure实例支持链式调用所有故障处理操作,不需要每次执行完一个操作后重新调用onFailure(),大幅简化了代码结构。

内容的提问来源于stack exchange,提问作者Allan Juan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:12:07