瀏覽代碼

doc: Update README for new adapter modules

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
master
Eric Zhao 5 年之前
父節點
當前提交
1a482b1d9f
共有 2 個檔案被更改,包括 79 行新增0 行删除
  1. +23
    -0
      sentinel-adapter/sentinel-reactor-adapter/README.md
  2. +56
    -0
      sentinel-adapter/sentinel-spring-webflux-adapter/README.md

+ 23
- 0
sentinel-adapter/sentinel-reactor-adapter/README.md 查看文件

@@ -0,0 +1,23 @@
# Sentinel Reactor Adapter

> Note: this module requires Java 8 or later version.

Sentinel provides integration module for [Reactor](https://projectreactor.io/).

Add the following dependency in `pom.xml` (if you are using Maven):

```xml
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-reactor-adapter</artifactId>
<version>x.y.z</version>
</dependency>
```

Example:

```java
someService.doSomething() // return type: Mono<T> or Flux<T>
.transform(new SentinelReactorTransformer<>(resourceName)) // transform here
.subscribe();
```

+ 56
- 0
sentinel-adapter/sentinel-spring-webflux-adapter/README.md 查看文件

@@ -0,0 +1,56 @@
# Sentinel Spring WebFlux Adapter

> Note: this module requires Java 8 or later version.

Sentinel provides integration module with Spring WebFlux, so reactive web applications can also leverage Sentinel's flow control
and circuit breaking to achieve reliability. The integration module is based on the Sentinel Reactor Adapter.

Add the following dependency in `pom.xml` (if you are using Maven):

```xml
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-spring-webflux-adapter</artifactId>
<version>x.y.z</version>
</dependency>
```

Then you only need to inject the corresponding `SentinelWebFluxFilter` and `SentinelBlockExceptionHandler` instance
in Spring configuration. For example:

```java
@Configuration
public class WebFluxConfig {

private final List<ViewResolver> viewResolvers;
private final ServerCodecConfigurer serverCodecConfigurer;

public WebFluxConfig(ObjectProvider<List<ViewResolver>> viewResolversProvider,
ServerCodecConfigurer serverCodecConfigurer) {
this.viewResolvers = viewResolversProvider.getIfAvailable(Collections::emptyList);
this.serverCodecConfigurer = serverCodecConfigurer;
}

@Bean
@Order(-1)
public SentinelBlockExceptionHandler sentinelBlockExceptionHandler() {
// Register the block exception handler for Spring WebFlux.
return new SentinelBlockExceptionHandler(viewResolvers, serverCodecConfigurer);
}

@Bean
@Order(-1)
public SentinelWebFluxFilter sentinelWebFluxFilter() {
// Register the Sentinel WebFlux filter.
return new SentinelWebFluxFilter();
}
}
```

You can register various customized callback in `WebFluxCallbackManager`:

- `setBlockHandler`: register a customized `BlockRequestHandler` to handle the blocked request. The default implementation is `DefaultBlockRequestHandler`, which returns default message like `Blocked by Sentinel: FlowException`.
- `setUrlCleaner`: used for normalization of URL. The function type is `(ServerWebExchange, String) → String`, which means `(webExchange, originalUrl) → finalUrl`.
- `setRequestOriginParser`: used to resolve the origin from the HTTP request. The function type is `ServerWebExchange → String`.

You can also refer to the demo: [sentinel-demo-spring-webflux](https://github.com/alibaba/Sentinel/tree/master/sentinel-demo/sentinel-demo-spring-webflux).

Loading…
取消
儲存