mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
Optimize Sentinel RestTemplate url resource
This commit is contained in:
parent
feeacc0a15
commit
d204a54b76
@ -185,7 +185,7 @@ Sentinel RestTemplate 限流的资源规则提供两种粒度:
|
|||||||
|
|
||||||
* `schema://host:port`:协议、主机和端口
|
* `schema://host:port`:协议、主机和端口
|
||||||
|
|
||||||
NOTE: 以 `https://www.taobao.com/test` 这个 url 为例。对应的资源名有两种粒度,分别是 `https://www.taobao.com:80` 以及 `https://www.taobao.com:80/test`
|
NOTE: 以 `https://www.taobao.com/test` 这个 url 为例。对应的资源名有两种粒度,分别是 `https://www.taobao.com` 以及 `https://www.taobao.com/test`
|
||||||
|
|
||||||
### 动态数据源支持
|
### 动态数据源支持
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ Sentinel RestTemplate provides two granularities for resource rate limiting:
|
|||||||
|
|
||||||
* `schema://host:port`: Protocol, host and port
|
* `schema://host:port`: Protocol, host and port
|
||||||
|
|
||||||
NOTE: Take `https://www.taobao.com/test` as an example. The corresponding resource names have two levels of granularities, `https://www.taobao.com:80` and `https://www.taobao.com:80/test`.
|
NOTE: Take `https://www.taobao.com/test` as an example. The corresponding resource names have two levels of granularities, `https://www.taobao.com` and `https://www.taobao.com/test`.
|
||||||
|
|
||||||
### Dynamic Data Source Support
|
### Dynamic Data Source Support
|
||||||
|
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package org.springframework.cloud.alibaba.cloud.examples;
|
package org.springframework.cloud.alibaba.cloud.examples;
|
||||||
|
|
||||||
|
import org.springframework.cloud.alibaba.sentinel.rest.SentinelClientHttpResponse;
|
||||||
|
import org.springframework.http.HttpRequest;
|
||||||
|
import org.springframework.http.client.ClientHttpRequestExecution;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.slots.block.BlockException;
|
import com.alibaba.csp.sentinel.slots.block.BlockException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -7,8 +11,10 @@ import com.alibaba.csp.sentinel.slots.block.BlockException;
|
|||||||
*/
|
*/
|
||||||
public class ExceptionUtil {
|
public class ExceptionUtil {
|
||||||
|
|
||||||
public static void handleException(BlockException ex) {
|
public static SentinelClientHttpResponse handleException(HttpRequest request,
|
||||||
|
byte[] body, ClientHttpRequestExecution execution, BlockException ex) {
|
||||||
System.out.println("Oops: " + ex.getClass().getCanonicalName());
|
System.out.println("Oops: " + ex.getClass().getCanonicalName());
|
||||||
|
return new SentinelClientHttpResponse("custom block info");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,9 +16,9 @@
|
|||||||
"strategy": 0
|
"strategy": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"resource": "abc",
|
"resource": "http://www.taobao.com",
|
||||||
"controlBehavior": 0,
|
"controlBehavior": 0,
|
||||||
"count": 1,
|
"count": 0,
|
||||||
"grade": 1,
|
"grade": 1,
|
||||||
"limitApp": "default",
|
"limitApp": "default",
|
||||||
"strategy": 0
|
"strategy": 0
|
||||||
|
@ -58,8 +58,8 @@ public class SentinelProtectInterceptor implements ClientHttpRequestInterceptor
|
|||||||
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
|
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
|
||||||
ClientHttpRequestExecution execution) throws IOException {
|
ClientHttpRequestExecution execution) throws IOException {
|
||||||
URI uri = request.getURI();
|
URI uri = request.getURI();
|
||||||
String hostResource = uri.getScheme() + "://" + uri.getHost() + ":"
|
String hostResource = uri.getScheme() + "://" + uri.getHost()
|
||||||
+ (uri.getPort() == -1 ? 80 : uri.getPort());
|
+ (uri.getPort() == -1 ? "" : ":" + uri.getPort());
|
||||||
String hostWithPathResource = hostResource + uri.getPath();
|
String hostWithPathResource = hostResource + uri.getPath();
|
||||||
Entry hostEntry = null, hostWithPathEntry = null;
|
Entry hostEntry = null, hostWithPathEntry = null;
|
||||||
ClientHttpResponse response;
|
ClientHttpResponse response;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user