我在 Quarkus 上使用 Mutiny 时遇到了一些奇怪的行为。
我的问题是我正在尝试将现有方法包装到 Uni 中,并且我希望此方法重试一定次数,如果它们都失败,我希望调用我的失败订阅,但不是。
为了更好地理解这一点,我为它写了一个测试:
@Test
void mutinySubscriptionNotCalledAfterRetry() {
final AtomicBoolean executed = new AtomicBoolean(false);
Uni.createFrom().item(this::error)
.onFailure()
.retry()
.withBackOff(Duration.ofSeconds(1)).withJitter(0.2)
.atMost(5)
.subscribe()
.with(success -> fail(),
failure -> executed.set(true));
assertTrue(executed.get()); // Failing statement
}
private boolean error() {
throw new RuntimeException();
}
问题是从未运行过失败订阅,而且我不知道我是否无法理解某些内容,但这似乎是根据克莱门特游乐场的有效用例:
https://gist.github.com/cescoffier/e9abce907a1c3d05d70bea3dae6dc3d5
任何人都可以对此有所了解吗?
提前非常感谢。