blob: 0d4d347c23df0c1903c18cb06ed529d3c660b2db [file] [view]
---
title: Resilience4j Plugin
keywords: ["Resilience4j"]
description: resilience4j plugin
---
## Description
* `Resilience4j` is one of the options that supports flow control and circuit breaking.
* `Resilience4j` supports flow control and circuit breaking functions for gateway.
## Plugin Setting
Select a mode to start shenyu-admin. For details, see deployment. For example, with [Local Deployment](../../deployment/deployment-local) starts the `Apache ShenYu` background management system.
* In BasicConfig --> Plugin --> resilience4j, set to enable.
* If the user don't use, please disable the plugin in the background.
<img src="/img/shenyu/plugin/resilience4j/resilience4j-plugin-en-1.png" width="80%" height="80%" />
## Add resilience4j plugin dependency
* Add `resilience4j` dependency in the `pom.xml` file of the gateway.
```xml
<!-- apache shenyu resilience4j plugin start-->
<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-plugin-resilience4j</artifactId>
<version>${project.version}</version>
</dependency>
<!-- apache shenyu resilience4j plugin end-->
```
## Resilience4j Config
For more information on selectors and rules configuration, see [Selector And Rule Config](../../user-guide/admin-usage/selector-and-rule) , only some of the fields are covered here.
#### Selector Config
It is used to filter traffic for the first time and does not require handle fields.
<img src="/img/shenyu/plugin/resilience4j/resilience4j-plugin-en-2.png" width="80%" height="80%" />
#### Rule Config
For the final filtering of traffic, there is a rule handler logic.
<img src="/img/shenyu/plugin/resilience4j/resilience4j-plugin-en-3.png" width="80%" height="80%" />
* Resilience4j Processing Details
* `limitForPeriod` :Configures the number of permissions available during one limit refresh period,default value:`50`.
* `limitRefreshPeriod` :Configures the period of a limit refresh. After each period the rate limiter sets its permissions count back to the limitForPeriod value,default value:`500`.
* `timeoutDurationRate` :Configures wait time(ms) a thread waits for a permission,default value:`5000`.
* `circuitEnable` :Configures circuitBreaker enable, `0`:OFF ,`1`:ON ,default value:`0`.
* `failureRateThreshold` :Configures the failure rate threshold in percentage,When the failure rate is equal or greater than the threshold the CircuitBreaker transitions to open and starts short-circuiting calls,default value:`50`.
* `fallbackUri` :Configures the fall back uri.
* `minimumNumberOfCalls` :Configures the minimum number of calls which are required (per sliding window period) before the CircuitBreaker can calculate the error rate or slow call rate,default value:`100`.
* `bufferSizeInHalfOpen`:Configures the number of permitted calls when the CircuitBreaker is half open,default value:`10`.
* `slidingWindowSize` :Configures the size of the sliding window which is used to record the outcome of calls when the CircuitBreaker is closed,default value:`100`.
* `slidingWindowType` :Configures the type of the sliding window which is used to record the outcome of calls when the CircuitBreaker is closed,
Sliding window can either be `0`:count-based or `1`:time-based.,default value:`0`.
* `timeoutDuration` :Configures request CircuitBreaker timeout(ms),default value:`30000`.
* `waitIntervalInOpen` :Configures the circuitBreaker time(ms) of duration,default value:`10`.
* `automaticTransitionFromOpenToHalfOpenEnabled` :Configures automatically transition from open state to half open state,`true`:ON, `false`:OFF, default value:`false`.