diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml
index 038969241..383703cbd 100644
--- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/pom.xml
@@ -40,6 +40,11 @@
spring-cloud-starter-feign
+
+ org.springframework.cloud
+ spring-cloud-starter-alibaba-sentinel
+
+
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ConsumerApplication.java b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ConsumerApplication.java
index 96a623314..dddd3368f 100644
--- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ConsumerApplication.java
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ConsumerApplication.java
@@ -2,6 +2,7 @@ package org.springframework.cloud.alibaba.cloud.examples;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.alibaba.cloud.examples.ConsumerApplication.EchoService;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
@@ -10,6 +11,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate;
/**
@@ -20,22 +22,50 @@ import org.springframework.web.client.RestTemplate;
@EnableFeignClients
public class ConsumerApplication {
- @LoadBalanced
- @Bean
- public RestTemplate restTemplate() {
- return new RestTemplate();
- }
+ @LoadBalanced
+ @Bean
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+ public static void main(String[] args) {
+ SpringApplication.run(ConsumerApplication.class, args);
+ }
+ @FeignClient(name = "service-provider", fallback = EchoServiceFallback.class, configuration = FeignConfiguration.class)
+ public interface EchoService {
+ @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
+ String echo(@PathVariable("str") String str);
+ @RequestMapping(value = "/divide", method = RequestMethod.GET)
+ String divide(@RequestParam("a") Integer a, @RequestParam("b") Integer b);
- public static void main(String[] args) {
- SpringApplication.run(ConsumerApplication.class, args);
- }
+ @RequestMapping(value = "/notFound", method = RequestMethod.GET)
+ String notFound();
+ }
- @FeignClient(name = "service-provider")
- public interface EchoService {
- @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
- String echo(@PathVariable("str") String str);
- }
+}
+
+class FeignConfiguration {
+ @Bean
+ public EchoServiceFallback echoServiceFallback() {
+ return new EchoServiceFallback();
+ }
+}
+
+class EchoServiceFallback implements EchoService {
+ @Override
+ public String echo(@PathVariable("str") String str) {
+ return "echo fallback";
+ }
+
+ @Override
+ public String divide(@RequestParam Integer a, @RequestParam Integer b) {
+ return "divide fallback";
+ }
+
+ @Override
+ public String notFound() {
+ return "notFound fallback";
+ }
}
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/TestController.java b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/TestController.java
index b896691bb..55c751c71 100644
--- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/TestController.java
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/TestController.java
@@ -6,6 +6,7 @@ import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@@ -15,31 +16,42 @@ import org.springframework.web.client.RestTemplate;
@RestController
public class TestController {
- @Autowired
- private RestTemplate restTemplate;
- @Autowired
- private EchoService echoService;
-
-
- @Autowired
- private DiscoveryClient discoveryClient;
-
- @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
- public String rest(@PathVariable String str) {
- return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
- }
- @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
- public String feign(@PathVariable String str) {
- return echoService.echo(str);
- }
-
-
- @RequestMapping(value="/services/{service}",method = RequestMethod.GET)
- public Object client(@PathVariable String service){
- return discoveryClient.getInstances(service);
- }
- @RequestMapping(value="/services",method = RequestMethod.GET)
- public Object services(){
- return discoveryClient.getServices();
- }
+ @Autowired
+ private RestTemplate restTemplate;
+ @Autowired
+ private EchoService echoService;
+
+ @Autowired
+ private DiscoveryClient discoveryClient;
+
+ @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
+ public String rest(@PathVariable String str) {
+ return restTemplate.getForObject("http://service-provider/echo/" + str,
+ String.class);
+ }
+
+ @RequestMapping(value = "/notFound-feign", method = RequestMethod.GET)
+ public String notFound() {
+ return echoService.notFound();
+ }
+
+ @RequestMapping(value = "/divide-feign", method = RequestMethod.GET)
+ public String divide(@RequestParam Integer a, @RequestParam Integer b) {
+ return echoService.divide(a, b);
+ }
+
+ @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
+ public String feign(@PathVariable String str) {
+ return echoService.echo(str);
+ }
+
+ @RequestMapping(value = "/services/{service}", method = RequestMethod.GET)
+ public Object client(@PathVariable String service) {
+ return discoveryClient.getInstances(service);
+ }
+
+ @RequestMapping(value = "/services", method = RequestMethod.GET)
+ public Object services() {
+ return discoveryClient.getServices();
+ }
}
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/resources/application.properties
index 1df160fcc..fbc9736eb 100644
--- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/resources/application.properties
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/resources/application.properties
@@ -1,4 +1,12 @@
spring.application.name=service-consumer
server.port=18083
management.endpoints.web.exposure.include=*
-spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
\ No newline at end of file
+spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
+
+feign.sentinel.enabled=true
+
+spring.cloud.sentinel.transport.dashboard=localhost:8080
+spring.cloud.sentinel.eager=true
+
+spring.cloud.sentinel.datasource.ds1.file.file=classpath: flowrule.json
+spring.cloud.sentinel.datasource.ds1.file.data-type=json
\ No newline at end of file
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/resources/flowrule.json b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/resources/flowrule.json
new file mode 100644
index 000000000..3dd011628
--- /dev/null
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-consumer-example/src/main/resources/flowrule.json
@@ -0,0 +1,10 @@
+[
+ {
+ "resource": "GET:http://service-provider/echo/{str}",
+ "controlBehavior": 0,
+ "count": 1,
+ "grade": 1,
+ "limitApp": "default",
+ "strategy": 0
+ }
+]
\ No newline at end of file
diff --git a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ProviderApplication.java b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ProviderApplication.java
index 169bccd67..843f5cbe0 100644
--- a/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ProviderApplication.java
+++ b/spring-cloud-alibaba-examples/nacos-example/nacos-discovery-example/nacos-discovery-provider-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/ProviderApplication.java
@@ -6,6 +6,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
@@ -25,5 +26,10 @@ public class ProviderApplication {
public String echo(@PathVariable String string) {
return "hello Nacos Discovery " + string;
}
+
+ @RequestMapping(value = "/divide", method = RequestMethod.GET)
+ public String divide(@RequestParam Integer a, @RequestParam Integer b) {
+ return String.valueOf(a / b);
+ }
}
}