diff --git a/eureka-feign/.gitignore b/eureka-feign/.gitignore new file mode 100644 index 0000000..338ed4c --- /dev/null +++ b/eureka-feign/.gitignore @@ -0,0 +1,8 @@ +/.classpath +/.project +/.settings +/bin/ +/logs +/target +*.log +/src/main/resources/static \ No newline at end of file diff --git a/eureka-feign/pom.xml b/eureka-feign/pom.xml new file mode 100644 index 0000000..588e25d --- /dev/null +++ b/eureka-feign/pom.xml @@ -0,0 +1,33 @@ + + 4.0.0 + + vip.xumy.learn + spring-cloud-demo + 1.0.0.RELEASE + + eureka-client-feign + 1.0.0 + eureka-client-feign + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + + \ No newline at end of file diff --git a/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java new file mode 100644 index 0000000..85eb05a --- /dev/null +++ b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java @@ -0,0 +1,20 @@ +package vip.xumy.learn.eureka.client; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloControler { + + @Autowired + SchedualServiceHi helloService; + + @GetMapping(value = "/hi/{name}") + public String hi(@PathVariable("name") String name) { + return helloService.sayHiFromClientOne( name ); + } +} + + diff --git a/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHi.java b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHi.java new file mode 100644 index 0000000..39b9d0a --- /dev/null +++ b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHi.java @@ -0,0 +1,16 @@ +package vip.xumy.learn.eureka.client; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +@FeignClient(value = "service-hi", fallback = SchedualServiceHiHystric.class) +public interface SchedualServiceHi { + @RequestMapping(value = "/hi",method = RequestMethod.GET) + String sayHiFromClientOne(@RequestParam(value = "name") String name); +} + + + + diff --git a/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHiHystric.java b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHiHystric.java new file mode 100644 index 0000000..c2e43a5 --- /dev/null +++ b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/SchedualServiceHiHystric.java @@ -0,0 +1,12 @@ +package vip.xumy.learn.eureka.client; + +import org.springframework.stereotype.Component; + +@Component +public class SchedualServiceHiHystric implements SchedualServiceHi { + @Override + public String sayHiFromClientOne(String name) { + return "sorry "+name; + } +} + diff --git a/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/ServiceFeignApplication.java b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/ServiceFeignApplication.java new file mode 100644 index 0000000..a378d52 --- /dev/null +++ b/eureka-feign/src/main/java/vip/xumy/learn/eureka/client/ServiceFeignApplication.java @@ -0,0 +1,25 @@ +package vip.xumy.learn.eureka.client; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.openfeign.EnableFeignClients; + +@SpringBootApplication +@EnableEurekaClient +@EnableDiscoveryClient +@EnableFeignClients +public class ServiceFeignApplication { + + public static void main(String[] args) { + SpringApplication.run( ServiceFeignApplication.class, args ); + } + +} + + + + + + diff --git a/eureka-feign/src/main/resources/application.properties b/eureka-feign/src/main/resources/application.properties new file mode 100644 index 0000000..12a63f6 --- /dev/null +++ b/eureka-feign/src/main/resources/application.properties @@ -0,0 +1,8 @@ +server.port=8765 + +eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ + +spring.application.name=eureka-feign + +feign.hystrix.enabled=true + diff --git a/eureka-hi/.gitignore b/eureka-hi/.gitignore new file mode 100644 index 0000000..338ed4c --- /dev/null +++ b/eureka-hi/.gitignore @@ -0,0 +1,8 @@ +/.classpath +/.project +/.settings +/bin/ +/logs +/target +*.log +/src/main/resources/static \ No newline at end of file diff --git a/eureka-hi/pom.xml b/eureka-hi/pom.xml new file mode 100644 index 0000000..d94cb3a --- /dev/null +++ b/eureka-hi/pom.xml @@ -0,0 +1,37 @@ + + 4.0.0 + + vip.xumy.learn + spring-cloud-demo + 1.0.0.RELEASE + + eureka-client-hi + 1.0.0 + eureka-client-hi + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file diff --git a/eureka-hi/src/main/java/vip/xumy/learn/eureka/client/ServiceHiApplication.java b/eureka-hi/src/main/java/vip/xumy/learn/eureka/client/ServiceHiApplication.java new file mode 100644 index 0000000..ad2fcaa --- /dev/null +++ b/eureka-hi/src/main/java/vip/xumy/learn/eureka/client/ServiceHiApplication.java @@ -0,0 +1,31 @@ +package vip.xumy.learn.eureka.client; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@SpringBootApplication +@EnableEurekaClient +@RestController +public class ServiceHiApplication { + + public static void main(String[] args) { + SpringApplication.run( ServiceHiApplication.class, args ); + } + + @Value("${server.port}") + String port; + + @RequestMapping("/hi") + public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) { + return "hi " + name + " ,i am from port:" + port; + } + +} + + + diff --git a/eureka-hi/src/main/resources/application.properties b/eureka-hi/src/main/resources/application.properties new file mode 100644 index 0000000..e9d302d --- /dev/null +++ b/eureka-hi/src/main/resources/application.properties @@ -0,0 +1,6 @@ +server.port=8762 + +eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ + +spring.application.name=eureka-hi + diff --git a/eureka-ribbon/.gitignore b/eureka-ribbon/.gitignore new file mode 100644 index 0000000..338ed4c --- /dev/null +++ b/eureka-ribbon/.gitignore @@ -0,0 +1,8 @@ +/.classpath +/.project +/.settings +/bin/ +/logs +/target +*.log +/src/main/resources/static \ No newline at end of file diff --git a/eureka-ribbon/pom.xml b/eureka-ribbon/pom.xml new file mode 100644 index 0000000..49f546c --- /dev/null +++ b/eureka-ribbon/pom.xml @@ -0,0 +1,39 @@ + + 4.0.0 + + vip.xumy.learn + spring-cloud-demo + 1.0.0.RELEASE + + eureka-client-ribbon + 1.0.0 + eureka-client-ribbon + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.cloud + spring-cloud-starter-netflix-ribbon + + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + + + + \ No newline at end of file diff --git a/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java new file mode 100644 index 0000000..d9e30ad --- /dev/null +++ b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloControler.java @@ -0,0 +1,20 @@ +package vip.xumy.learn.eureka.client; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloControler { + + @Autowired + HelloService helloService; + + @GetMapping(value = "/hi/{name}") + public String hi(@PathVariable("name") String name) { + return helloService.hiService( name ); + } +} + + diff --git a/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloService.java b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloService.java new file mode 100644 index 0000000..5f2d4df --- /dev/null +++ b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/HelloService.java @@ -0,0 +1,26 @@ +package vip.xumy.learn.eureka.client; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; + +@Service +public class HelloService { + + @Autowired + RestTemplate restTemplate; + + @HystrixCommand(fallbackMethod = "hiError") + public String hiService(String name) { + return restTemplate.getForObject("http://SERVICE-HI/hi?name="+name,String.class); + } + + public String hiError(String name) { + return "hi,"+name+",sorry,error!"; + } + + +} + diff --git a/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/ServiceRibbonApplication.java b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/ServiceRibbonApplication.java new file mode 100644 index 0000000..529321e --- /dev/null +++ b/eureka-ribbon/src/main/java/vip/xumy/learn/eureka/client/ServiceRibbonApplication.java @@ -0,0 +1,34 @@ +package vip.xumy.learn.eureka.client; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; +import org.springframework.cloud.netflix.hystrix.EnableHystrix; +import org.springframework.context.annotation.Bean; +import org.springframework.web.client.RestTemplate; + +@SpringBootApplication +@EnableEurekaClient +@EnableDiscoveryClient +@EnableHystrix +public class ServiceRibbonApplication { + + public static void main(String[] args) { + SpringApplication.run( ServiceRibbonApplication.class, args ); + } + + @Bean + @LoadBalanced + RestTemplate restTemplate() { + return new RestTemplate(); + } + +} + + + + + + diff --git a/eureka-ribbon/src/main/resources/application.properties b/eureka-ribbon/src/main/resources/application.properties new file mode 100644 index 0000000..6e69b92 --- /dev/null +++ b/eureka-ribbon/src/main/resources/application.properties @@ -0,0 +1,6 @@ +server.port=8764 + +eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ + +spring.application.name=eureka-ribbon + diff --git a/eureka-server/.gitignore b/eureka-server/.gitignore new file mode 100644 index 0000000..338ed4c --- /dev/null +++ b/eureka-server/.gitignore @@ -0,0 +1,8 @@ +/.classpath +/.project +/.settings +/bin/ +/logs +/target +*.log +/src/main/resources/static \ No newline at end of file diff --git a/eureka-server/pom.xml b/eureka-server/pom.xml new file mode 100644 index 0000000..bfeb0ee --- /dev/null +++ b/eureka-server/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + + vip.xumy.learn + spring-cloud-demo + 1.0.0.RELEASE + + eureka-server-demo + 1.0.0 + eureka-server-demo + jar + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-server + + + + + \ No newline at end of file diff --git a/eureka-server/src/main/java/vip/xumy/learn/eureka/server/EurekaServerApplication.java b/eureka-server/src/main/java/vip/xumy/learn/eureka/server/EurekaServerApplication.java new file mode 100644 index 0000000..d324f79 --- /dev/null +++ b/eureka-server/src/main/java/vip/xumy/learn/eureka/server/EurekaServerApplication.java @@ -0,0 +1,20 @@ +package vip.xumy.learn.eureka.server; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; + +/** Do not use for any commercial purposes without permission + * @author: mengyxu + * @date: 2022年2月24日 + */ + +@SpringBootApplication +@EnableEurekaServer +public class EurekaServerApplication { + + public static void main(String[] args) { + SpringApplication.run(EurekaServerApplication.class, args); + } + +} diff --git a/eureka-server/src/main/resources/application.properties b/eureka-server/src/main/resources/application.properties new file mode 100644 index 0000000..c8bc83c --- /dev/null +++ b/eureka-server/src/main/resources/application.properties @@ -0,0 +1,9 @@ +server.port=8761 + +eureka.instance.hostname=localhost +eureka.client.registerWithEureka=false +eureka.client.fetchRegistry=false +eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ + +spring.application.name=eureka-server + diff --git a/parent/.gitignore b/parent/.gitignore new file mode 100644 index 0000000..338ed4c --- /dev/null +++ b/parent/.gitignore @@ -0,0 +1,8 @@ +/.classpath +/.project +/.settings +/bin/ +/logs +/target +*.log +/src/main/resources/static \ No newline at end of file diff --git a/parent/pom.xml b/parent/pom.xml new file mode 100644 index 0000000..5b91992 --- /dev/null +++ b/parent/pom.xml @@ -0,0 +1,60 @@ + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.0.3.RELEASE + + vip.xumy.learn + spring-cloud-demo + 1.0.0.RELEASE + spring-cloud-demo + pom + + + UTF-8 + UTF-8 + 1.8 + Finchley.RELEASE + + + + ../eureka-server + ../service-hi + ../service-ribbon + + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + \ No newline at end of file