Failsafe 概述(1)

概述

Failsafe 是一个轻量级、无依赖的库,用于处理 Java 8+ 中的故障。它有一个简洁的 API 来处理日常用例,并且具有处理其他所有事情的灵活性。Failsafe 通过将可执行逻辑包装在一种或多种容错策略中来工作,这些策略可以组合和合成以满足需求。

设置
最新的容错依赖添加到您的项目中。

入门指南

为了了解Failsafe的工作原理,我们将创建一个重试策略,该策略定义了哪些故障需要处理以及何时应进行重试:

RetryPolicy<Object> retryPolicy = RetryPolicy.builder()
  .handle(ConnectException.class)
  .withDelay(Duration.ofSeconds(1))
  .withMaxRetries(3)
  .build();

然后我们可以执行一个Runnable或Supplier 带有重试:

// Run with retries
Failsafe.with(retryPolicy).run(() -> connect());

// Get with retries
Connection connection = Failsafe.with(retryPolicy).get(() -> connect());

异步执行
异步执行Runnable或Supplier 以 策略进行操作很简单:

// Run with retries asynchronously
CompletableFuture<Void> future = Failsafe.with(retryPolicy).runAsync(() -> connect());

// Get with retries asynchronously
CompletableFuture<Connection> future = Failsafe.with(retryPolicy).getAsync(() -> connect());

制定政策
多个策略可以任意组合以增加额外的韧性层次或以不同的方式处理不同的故障:

var fallback = Fallback.of(this::connectToBackup);
var circuitBreaker = CircuitBreaker.ofDefaults();
var timeout = Timeout.of(Duration.ofSeconds(10));

// Get with fallback, retries, circuit breaker, and timeout
Failsafe.with(fallback, retryPolicy, circuitBreaker, timeout).get(this::connect);

在制定政策时,顺序确实很重要。请参阅政策制定概述以获取更多详细信息。

容错执行器
策略组合也可以通过FailsafeExecutor保存以备后用:

FailsafeExecutor<Object> executor = Failsafe.with(retryPolicy).compose(circuitBreaker);
executor.run(this::connect);

进一步阅读
阅读更多关于政策及其使用方式的信息,然后在网站菜单中探索Failsafe的其他功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值