├── .github └── workflows │ └── maven.yml ├── .gitignore ├── LICENSE ├── README.md ├── springcloud-alibaba ├── .gitignore ├── README.md ├── pom.xml ├── springcloud-alibaba-nacos-feign │ ├── .gitignore │ ├── pom.xml │ ├── springcloud-alibaba-nacos-feign-consumer1 │ │ ├── .gitignore │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── pancm │ │ │ │ ├── App.java │ │ │ │ ├── fegin │ │ │ │ ├── CosTestClient.java │ │ │ │ └── TestClient.java │ │ │ │ └── web │ │ │ │ ├── ConfigController.java │ │ │ │ └── FeignTestController.java │ │ │ └── resources │ │ │ ├── application.yml │ │ │ └── logback.xml │ └── springcloud-alibaba-nacos-feign-consumer2 │ │ ├── .gitignore │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pancm │ │ │ ├── App.java │ │ │ ├── fegin │ │ │ └── TestClient.java │ │ │ ├── util │ │ │ └── CosBootUtil.java │ │ │ └── web │ │ │ ├── ConfigController.java │ │ │ └── FeignTestController.java │ │ └── resources │ │ ├── application.yml │ │ └── logback.xml ├── springcloud-alibaba-nacos │ ├── .gitignore │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pancm │ │ │ ├── App.java │ │ │ └── web │ │ │ ├── ConfigController.java │ │ │ └── DiscoveryController.java │ │ └── resources │ │ ├── bootstrap.properties │ │ ├── logback.xml │ │ └── pcm.properties ├── springcloud-alibaba-seata │ ├── .gitignore │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pancm │ │ │ ├── App.java │ │ │ └── web │ │ │ ├── ConfigController.java │ │ │ └── DiscoveryController.java │ │ └── resources │ │ ├── bootstrap.properties │ │ ├── logback.xml │ │ └── pcm.properties ├── springcloud-alibaba-sentinel │ ├── .gitignore │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pancm │ │ │ ├── App.java │ │ │ └── web │ │ │ └── HelloController.java │ │ └── resources │ │ ├── application.properties │ │ └── logback.xml └── springcloud-alibaba-sideca │ ├── .gitignore │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── com │ │ └── pancm │ │ ├── App.java │ │ └── web │ │ ├── ConfigController.java │ │ └── DiscoveryController.java │ └── resources │ ├── bootstrap.properties │ ├── logback.xml │ └── pcm.properties ├── springcloud-config-bus ├── config-repo │ ├── configtest-dev.properties │ ├── configtest-pro.properties │ └── configtest.properties ├── pom.xml ├── springcloud-config-bus-client │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── ConfigClientApplication.java │ │ │ │ │ └── web │ │ │ │ │ └── ClientController.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ └── bootstrap.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-config-bus-client │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ ├── application.properties │ │ └── bootstrap.properties ├── springcloud-config-bus-client2 │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── ConfigClientApplication2.java │ │ │ │ │ └── web │ │ │ │ │ └── ClientController.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ └── bootstrap.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-config-bus-client2 │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ ├── application.properties │ │ └── bootstrap.properties ├── springcloud-config-bus-eureka │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ └── ConfigBusEurekaApplication.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-config-bus-eureka │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-config-bus-server │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ └── ConfigServerApplication.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ └── configtest-pro.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-config-bus-server │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ ├── application.properties │ │ └── configtest.properties └── src │ └── main │ └── java │ └── com │ └── pancm │ └── App.java ├── springcloud-config ├── README.md ├── config-repo │ ├── configtest-dev.properties │ ├── configtest-pro.properties │ └── configtest.properties ├── pom.xml ├── springcloud-config-client │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── ConfigClientApplication.java │ │ │ │ │ └── web │ │ │ │ │ └── ClientController.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ └── bootstrap.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-config-client │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ ├── application.properties │ │ └── bootstrap.properties ├── springcloud-config-eureka │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ └── ConfigEurekaApplication.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-config-eureka │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-config-server │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ └── ConfigServerApplication.java │ │ │ └── resources │ │ │ │ ├── application.properties │ │ │ │ └── configtest.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-config-server │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ ├── application.properties │ │ └── configtest.properties └── src │ ├── main │ └── java │ │ └── com │ │ └── pancm │ │ └── App.java │ └── test │ └── java │ └── com │ └── pancm │ └── AppTest.java ├── springcloud-eureka ├── .gitignore ├── README.md ├── pom.xml ├── springboot-eureka-client │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── pancm │ │ │ │ └── App.java │ │ │ └── resources │ │ │ └── application.properties │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springboot-eureka-client │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springboot-eureka-server │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── pancm │ │ │ │ └── App.java │ │ │ └── resources │ │ │ └── application.properties │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springboot-eureka-server │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springboot-eureka-server2 │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── pancm │ │ │ │ └── App.java │ │ │ └── resources │ │ │ └── application.properties │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springboot-eureka-server2 │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springboot-eureka-server3 │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── pancm │ │ │ │ └── App.java │ │ │ └── resources │ │ │ └── application.properties │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springboot-eureka-server3 │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties └── src │ └── main │ └── java │ └── com │ └── pancm │ └── App.java ├── springcloud-feign ├── README.md ├── pom.xml ├── springcloud-feign-consumer │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── FeignConsumerApplication.java │ │ │ │ │ ├── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ │ │ └── remote │ │ │ │ │ ├── HelloRemote.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-feign-consumer │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-feign-consumer2 │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── FeignConsumerApplication2.java │ │ │ │ │ └── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-feign-consumer2 │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-feign-eureka │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ └── FeignEurekaApplication.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-feign-eureka │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties └── src │ └── main │ └── java │ └── com │ └── pancm │ └── App.java ├── springcloud-hystrix-dashboard ├── README.md ├── pom.xml ├── springcloud-hystrix-dashboard-consumer │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── HystrixDashboardApplication.java │ │ │ │ │ ├── config │ │ │ │ │ ├── HystrixServlet.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ │ │ └── remote │ │ │ │ │ ├── HelloRemote.java │ │ │ │ │ ├── HelloRemoteHystrix.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-hystrix-dashboard-consumer │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-hystrix-dashboard-consumer2 │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── HystrixConsumerApplication2.java │ │ │ │ │ └── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-hystrix-dashboard-consumer2 │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-hystrix-dashboard-eureka │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ └── HystrixEurekaApplication.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-hystrix-dashboard-eureka │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-hystrix-dashboard-turbine │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── HystrixTurbineApplication.java │ │ │ │ │ └── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-hystrix-dashboard-turbine │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties └── src │ ├── main │ └── java │ │ └── com │ │ └── pancm │ │ └── App.java │ └── test │ └── java │ └── com │ └── pancm │ └── AppTest.java ├── springcloud-hystrix ├── README.md ├── pom.xml ├── springcloud-eureka-hystrix │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ └── HystrixEurekaApplication.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-hystrix-eureka │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-hystrix-consumer │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── HystrixConsumerApplication.java │ │ │ │ │ ├── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ │ │ └── remote │ │ │ │ │ ├── HelloRemote.java │ │ │ │ │ ├── HelloRemoteHystrix.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-hystrix-consumer │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-hystrix-consumer2 │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── HystrixConsumerApplication2.java │ │ │ │ │ └── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-hystrix-consumer2 │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties └── src │ ├── main │ └── java │ │ └── com │ │ └── pancm │ │ └── App.java │ └── test │ └── java │ └── com │ └── pancm │ └── AppTest.java ├── springcloud-ribbon ├── README.md ├── pom.xml ├── springcloud-ribbon-consumer │ ├── pom.xml │ ├── springcloud-ribbon-consumer.iml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── RibbonConsumerApplication.java │ │ │ │ │ ├── config │ │ │ │ │ ├── RibbonConfiguration.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ │ │ └── remote │ │ │ │ │ ├── HelloRemote.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-ribbon-consumer │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-ribbon-consumer2 │ ├── pom.xml │ ├── springcloud-ribbon-consumer2.iml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── RibbonConsumerApplication2.java │ │ │ │ │ └── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-ribbon-consumer2 │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-ribbon-consumer3 │ ├── pom.xml │ ├── springcloud-ribbon-consumer3.iml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ ├── RibbonConsumerApplication3.java │ │ │ │ │ └── controller │ │ │ │ │ ├── ConsumerController.java │ │ │ │ │ └── package-info.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-ribbon-consumer3 │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-ribbon-eureka │ ├── pom.xml │ ├── springcloud-ribbon-eureka.iml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── pancm │ │ │ │ │ └── RibbonEurekaApplication.java │ │ │ └── resources │ │ │ │ └── application.properties │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── pancm │ │ │ └── AppTest.java │ └── target │ │ └── classes │ │ ├── META-INF │ │ ├── MANIFEST.MF │ │ └── maven │ │ │ └── 1.0.0 │ │ │ └── springcloud-ribbon-eureka │ │ │ ├── pom.properties │ │ │ └── pom.xml │ │ └── application.properties ├── springcloud-ribbon.iml └── src │ └── main │ └── java │ └── com │ └── pancm │ └── App.java ├── springcloud-zuul-filter ├── pom.xml ├── springcloud-zuul-filter-eureka │ ├── pom.xml │ ├── springclound-zuul-filter-eureka.iml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pancm │ │ │ └── ZuulEurekaApplication.java │ │ └── resources │ │ └── application.properties ├── springcloud-zuul-filter-gateway │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pancm │ │ │ ├── ZuulApplication.java │ │ │ ├── fallback │ │ │ ├── MyFallback.java │ │ │ └── package-info.java │ │ │ └── filter │ │ │ ├── MyErrorFilter.java │ │ │ ├── MyZuulFilter.java │ │ │ └── package-info.java │ │ └── resources │ │ └── application.properties ├── springcloud-zuul-filter-server1 │ ├── pom.xml │ ├── springclound-zuul-filter-server1.iml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── pancm │ │ │ ├── ZuulServerApplication1.java │ │ │ └── controller │ │ │ ├── ConsumerController.java │ │ │ └── package-info.java │ │ └── resources │ │ └── application.properties └── springcloud-zuul-filter-server2 │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── pancm │ │ ├── ZuulServerApplication2.java │ │ └── controller │ │ ├── ConsumerController.java │ │ └── package-info.java │ └── resources │ └── application.properties └── springcloud-zuul ├── README.md ├── pom.xml ├── springcloud-zuul-eureka ├── pom.xml ├── springcloud-zuul-eureka.iml └── src │ └── main │ ├── java │ └── com │ │ └── pancm │ │ └── ZuulEurekaApplication.java │ └── resources │ └── application.properties ├── springcloud-zuul-gateway ├── pom.xml ├── springcloud-zuul-gateway.iml └── src │ └── main │ ├── java │ └── com │ │ └── pancm │ │ └── ZuulApplication.java │ └── resources │ └── application.properties ├── springcloud-zuul-server1 ├── pom.xml ├── springcloud-zuul-server1.iml └── src │ └── main │ ├── java │ └── com │ │ └── pancm │ │ ├── ZuulServerApplication1.java │ │ └── controller │ │ ├── ConsumerController.java │ │ └── package-info.java │ └── resources │ └── application.properties ├── springcloud-zuul-server2 ├── pom.xml ├── springcloud-zuul-server2.iml └── src │ └── main │ ├── java │ └── pancm │ │ ├── ZuulServerApplication2.java │ │ └── controller │ │ ├── ConsumerController.java │ │ └── package-info.java │ └── resources │ └── application.properties ├── springcloud-zuul.iml └── src └── main └── java └── com └── pancm └── App.java /.github/workflows/maven.yml: -------------------------------------------------------------------------------- 1 | name: Java CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v1 12 | - name: Set up JDK 1.8 13 | uses: actions/setup-java@v1 14 | with: 15 | java-version: 1.8 16 | - name: Build with Maven 17 | run: mvn -B package --file pom.xml 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuwujing/springcloud-study/fbf3ce7c334771c3a73b473db1630d19d3764079/.gitignore -------------------------------------------------------------------------------- /springcloud-alibaba/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /springcloud-alibaba/README.md: -------------------------------------------------------------------------------- 1 | ## springcloud-alibaba 2 | 3 | ### 介绍 4 | 5 | > springcloud-alibaba 是一系列组件的集合,它为Spring Cloud提供了许多优秀的补充。 6 | > 它包括Spring Cloud Gateway、Nacos、Sentinel、Seata、Sentinel等。 7 | > 这些组件可以提高Spring Cloud应用程序的性能、可靠性、可扩展性和可管理性。 8 | 9 | 官方文档地址: 10 | https://sca.aliyun.com/zh-cn/docs/2022.0.0.0/overview/what-is-sca 11 | 12 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer1/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer1/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 8 | import org.springframework.cloud.openfeign.EnableFeignClients; 9 | 10 | 11 | /** 12 | * @Author pancm 13 | * @Description springboot集成nacos配置中心 14 | * @Date 2024/1/26 15 | * @Param 16 | * @return 17 | **/ 18 | @SpringBootApplication 19 | @EnableDiscoveryClient 20 | @EnableFeignClients 21 | public class App 22 | { 23 | private static final Logger logger = LoggerFactory.getLogger(App.class); 24 | public static void main( String[] args ) 25 | { 26 | // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 27 | SpringApplication.run(App.class, args); 28 | logger.info("程序启动成功!"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer1/src/main/java/com/pancm/fegin/CosTestClient.java: -------------------------------------------------------------------------------- 1 | package com.pancm.fegin; 2 | 3 | 4 | import org.springframework.cloud.openfeign.FeignClient; 5 | import org.springframework.http.MediaType; 6 | import org.springframework.stereotype.Component; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.PostMapping; 9 | import org.springframework.web.bind.annotation.RequestParam; 10 | import org.springframework.web.bind.annotation.RequestPart; 11 | import org.springframework.web.multipart.MultipartFile; 12 | 13 | import java.util.Map; 14 | 15 | @FeignClient(value = "gdlh-common") 16 | @Component 17 | public interface CosTestClient { 18 | 19 | @PostMapping(value = "/file/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 20 | Map upload(@RequestPart("file") MultipartFile file); 21 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer1/src/main/java/com/pancm/fegin/TestClient.java: -------------------------------------------------------------------------------- 1 | package com.pancm.fegin; 2 | 3 | import org.springframework.cloud.openfeign.FeignClient; 4 | import org.springframework.stereotype.Component; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | 7 | @FeignClient(value = "jeecg-nacos-consumer2") 8 | @Component 9 | public interface TestClient { 10 | @GetMapping(value = "/config/getName") 11 | String getName(); 12 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer1/src/main/java/com/pancm/web/ConfigController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import org.springframework.cloud.context.config.annotation.RefreshScope; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 8 | 9 | /** 10 | * @Author pancm 11 | * @Description 官方示例文档 12 | * @Date 2024/1/26 13 | * @Param 14 | * @return 15 | **/ 16 | @RestController 17 | @RequestMapping("config") 18 | public class ConfigController { 19 | 20 | @RequestMapping(value = "/getAge", method = GET) 21 | public String getAge() { 22 | return "18"; 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer1/src/main/java/com/pancm/web/FeignTestController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import com.pancm.fegin.CosTestClient; 4 | import com.pancm.fegin.TestClient; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.*; 7 | import org.springframework.web.multipart.MultipartFile; 8 | 9 | import java.util.Map; 10 | 11 | /** 12 | * @Author pancm 13 | * @Description 14 | * @Date 2024/1/26 15 | * @Param 16 | * @return 17 | **/ 18 | @RestController 19 | @RequestMapping("test") 20 | public class FeignTestController { 21 | 22 | @Autowired 23 | private TestClient testClient; 24 | 25 | @Autowired 26 | private CosTestClient cosTestClient; 27 | 28 | @GetMapping 29 | public String test() { 30 | return testClient.getName(); 31 | } 32 | 33 | 34 | 35 | @PostMapping("/upload") 36 | public Map upload(@RequestParam("file") MultipartFile multipartFile) { 37 | return cosTestClient.upload(multipartFile); 38 | } 39 | 40 | 41 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer1/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 9001 3 | 4 | spring: 5 | application: 6 | # 服务名称 7 | name: springcloud-alibaba-nacos-feign-consumer1 8 | profiles: 9 | active: dev 10 | cloud: 11 | nacos: 12 | config: 13 | server-addr: 127.0.0.1 14 | group: DEFAULT_GROUP 15 | namespace: gdlh 16 | discovery: 17 | server-addr: 127.0.0.1 18 | group: DEFAULT_GROUP 19 | namespace: gdlh 20 | config: 21 | import: 22 | - optional:nacos:pancm.yaml 23 | - optional:nacos:pancm-@profile.name@.yaml -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer1/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 8 | 9 | 10 | 11 | 12 | 13 | 14 | ${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt 15 | 16 | 10MB 17 | 31 18 | 10GB 19 | 20 | 21 | 22 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer2/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer2/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 8 | import org.springframework.cloud.openfeign.EnableFeignClients; 9 | 10 | 11 | /** 12 | * @Author pancm 13 | * @Description springboot集成nacos配置中心 14 | * @Date 2024/1/26 15 | * @Param 16 | * @return 17 | **/ 18 | @SpringBootApplication 19 | @EnableDiscoveryClient 20 | @EnableFeignClients 21 | public class App 22 | { 23 | private static final Logger logger = LoggerFactory.getLogger(App.class); 24 | public static void main( String[] args ) 25 | { 26 | // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 27 | SpringApplication.run(App.class, args); 28 | logger.info("程序启动成功!"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer2/src/main/java/com/pancm/fegin/TestClient.java: -------------------------------------------------------------------------------- 1 | package com.pancm.fegin; 2 | 3 | import org.springframework.cloud.openfeign.FeignClient; 4 | import org.springframework.stereotype.Component; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | 7 | /** 8 | * @Author pancm 9 | * @Description 调用jeecg-nacos-consumer1服务 10 | * @Date 2024/3/12 11 | * @Param 12 | * @return 13 | **/ 14 | @FeignClient(value = "jeecg-nacos-consumer1") 15 | @Component 16 | public interface TestClient { 17 | @GetMapping(value = "/config/getAge") 18 | String getAge(); 19 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer2/src/main/java/com/pancm/web/FeignTestController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import com.pancm.fegin.TestClient; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 10 | 11 | /** 12 | * @Author pancm 13 | * @Description 14 | * @Date 2024/1/26 15 | * @Param 16 | * @return 17 | **/ 18 | @RestController 19 | @RequestMapping("test") 20 | public class FeignTestController { 21 | 22 | @Autowired 23 | private TestClient testClient; 24 | 25 | 26 | @GetMapping 27 | public String test() { 28 | return testClient.getAge(); 29 | } 30 | 31 | 32 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer2/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 9002 3 | 4 | spring: 5 | application: 6 | name: springcloud-alibaba-nacos-feign-consumer2 7 | profiles: 8 | active: dev 9 | cloud: 10 | nacos: 11 | config: 12 | server-addr: 127.0.0.1 13 | group: DEFAULT_GROUP 14 | namespace: gdlh 15 | discovery: 16 | server-addr: 127.0.0.1 17 | group: DEFAULT_GROUP 18 | namespace: gdlh 19 | config: 20 | import: 21 | - optional:nacos:pancm.yaml 22 | - optional:nacos:pancm-@profile.name@.yaml -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos-feign/springcloud-alibaba-nacos-feign-consumer2/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 8 | 9 | 10 | 11 | 12 | 13 | 14 | ${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt 15 | 16 | 10MB 17 | 31 18 | 10GB 19 | 20 | 21 | 22 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 8 | 9 | 10 | /** 11 | * @Author pancm 12 | * @Description springboot集成nacos配置中心 13 | * @Date 2024/1/26 14 | * @Param 15 | * @return 16 | **/ 17 | @SpringBootApplication 18 | @EnableDiscoveryClient 19 | public class App 20 | { 21 | private static final Logger logger = LoggerFactory.getLogger(App.class); 22 | public static void main( String[] args ) 23 | { 24 | // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 25 | SpringApplication.run(App.class, args); 26 | logger.info("程序启动成功!"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos/src/main/java/com/pancm/web/ConfigController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.cloud.context.config.annotation.RefreshScope; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 9 | 10 | /** 11 | * @Author pancm 12 | * @Description 官方示例文档 13 | * @Date 2024/1/26 14 | * @Param 15 | * @return 16 | **/ 17 | @RestController 18 | @RequestMapping("config") 19 | @RefreshScope 20 | public class ConfigController { 21 | 22 | 23 | 24 | @Value("${pcm.name:pcm-1001}") 25 | private String name; 26 | 27 | @Value("${pcm.age:18}") 28 | private String age; 29 | 30 | 31 | @RequestMapping(value = "/getAge", method = GET) 32 | public String getAge() { 33 | return age; 34 | } 35 | 36 | @RequestMapping(value = "/getName", method = GET) 37 | public String getName() { 38 | return name; 39 | } 40 | 41 | 42 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos/src/main/java/com/pancm/web/DiscoveryController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import com.alibaba.nacos.api.annotation.NacosInjected; 4 | import com.alibaba.nacos.api.exception.NacosException; 5 | import com.alibaba.nacos.api.naming.NamingService; 6 | import com.alibaba.nacos.api.naming.pojo.Instance; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RequestParam; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | import java.util.List; 12 | 13 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 14 | 15 | @RestController 16 | @RequestMapping("discovery") 17 | public class DiscoveryController { 18 | 19 | @NacosInjected 20 | private NamingService namingService; 21 | 22 | @RequestMapping(value = "/get", method = GET) 23 | public List get(@RequestParam String serviceName) throws NacosException { 24 | return namingService.getAllInstances(serviceName); 25 | } 26 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos/src/main/resources/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.banner.charset=UTF-8 2 | server.tomcat.uri-encoding=UTF-8 3 | spring.http.encoding.charset=UTF-8 4 | spring.http.encoding.enabled=true 5 | spring.http.encoding.force=true 6 | spring.messages.encoding=UTF-8 7 | server.port=8299 8 | spring.application.name=springboot-nacos 9 | spring.profiles.active=dev 10 | 11 | 12 | # nacos?? 13 | nacos.discovery.autoRegister=true 14 | spring.cloud.nacos.discovery.server-addr= http://127.0.0.1:8848 15 | spring.cloud.nacos.config.server-addr= http://127.0.0.1:8848 16 | spring.cloud.nacos.config.namespace= pcm-namespace--id 17 | spring.cloud.nacos.config.group= dev 18 | spring.cloud.nacos.config.fileExtension= properties 19 | 20 | 21 | # ?????? 22 | ##???????????dataId 23 | spring.cloud.nacos.config.extension-configs[0].data-id=pcm-dev.properties 24 | ##????????????? 25 | spring.cloud.nacos.config.extension-configs[0].group=dev 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 8 | 9 | 10 | 11 | 12 | 13 | 14 | ${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt 15 | 16 | 10MB 17 | 31 18 | 10GB 19 | 20 | 21 | 22 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-nacos/src/main/resources/pcm.properties: -------------------------------------------------------------------------------- 1 | pcm.age = 24 -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-seata/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-seata/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 8 | 9 | 10 | /** 11 | * @Author pancm 12 | * @Description springboot集成nacos配置中心 13 | * @Date 2024/1/26 14 | * @Param 15 | * @return 16 | **/ 17 | @SpringBootApplication 18 | @EnableDiscoveryClient 19 | public class App 20 | { 21 | private static final Logger logger = LoggerFactory.getLogger(App.class); 22 | public static void main( String[] args ) 23 | { 24 | // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 25 | SpringApplication.run(App.class, args); 26 | logger.info("程序启动成功!"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-seata/src/main/java/com/pancm/web/ConfigController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.cloud.context.config.annotation.RefreshScope; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 9 | 10 | /** 11 | * @Author pancm 12 | * @Description 官方示例文档 13 | * @Date 2024/1/26 14 | * @Param 15 | * @return 16 | **/ 17 | @RestController 18 | @RequestMapping("config") 19 | @RefreshScope 20 | public class ConfigController { 21 | 22 | 23 | 24 | @Value("${pcm.name:pcm-1001}") 25 | private String name; 26 | 27 | @Value("${pcm.age:18}") 28 | private String age; 29 | 30 | 31 | @RequestMapping(value = "/getAge", method = GET) 32 | public String getAge() { 33 | return age; 34 | } 35 | 36 | @RequestMapping(value = "/getName", method = GET) 37 | public String getName() { 38 | return name; 39 | } 40 | 41 | 42 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-seata/src/main/java/com/pancm/web/DiscoveryController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import com.alibaba.nacos.api.annotation.NacosInjected; 4 | import com.alibaba.nacos.api.exception.NacosException; 5 | import com.alibaba.nacos.api.naming.NamingService; 6 | import com.alibaba.nacos.api.naming.pojo.Instance; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RequestParam; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | import java.util.List; 12 | 13 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 14 | 15 | @RestController 16 | @RequestMapping("discovery") 17 | public class DiscoveryController { 18 | 19 | @NacosInjected 20 | private NamingService namingService; 21 | 22 | @RequestMapping(value = "/get", method = GET) 23 | public List get(@RequestParam String serviceName) throws NacosException { 24 | return namingService.getAllInstances(serviceName); 25 | } 26 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-seata/src/main/resources/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.banner.charset=UTF-8 2 | server.tomcat.uri-encoding=UTF-8 3 | spring.http.encoding.charset=UTF-8 4 | spring.http.encoding.enabled=true 5 | spring.http.encoding.force=true 6 | spring.messages.encoding=UTF-8 7 | server.port=8299 8 | spring.application.name=springboot-nacos 9 | spring.profiles.active=dev 10 | 11 | 12 | # nacos?? 13 | nacos.discovery.autoRegister=true 14 | spring.cloud.nacos.discovery.server-addr= http://127.0.0.1:8848 15 | spring.cloud.nacos.config.server-addr= http://127.0.0.1:8848 16 | spring.cloud.nacos.config.namespace= pcm-namespace--id 17 | spring.cloud.nacos.config.group= dev 18 | spring.cloud.nacos.config.fileExtension= properties 19 | 20 | 21 | # ?????? 22 | ##???????????dataId 23 | spring.cloud.nacos.config.extension-configs[0].data-id=pcm-dev.properties 24 | ##????????????? 25 | spring.cloud.nacos.config.extension-configs[0].group=dev 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-seata/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 8 | 9 | 10 | 11 | 12 | 13 | 14 | ${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt 15 | 16 | 10MB 17 | 31 18 | 10GB 19 | 20 | 21 | 22 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-seata/src/main/resources/pcm.properties: -------------------------------------------------------------------------------- 1 | pcm.age = 24 -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sentinel/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sentinel/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 8 | 9 | 10 | /** 11 | * @Author pancm 12 | * @Description springboot集成nacos配置中心 13 | * @Date 2024/1/26 14 | * @Param 15 | * @return 16 | **/ 17 | @SpringBootApplication 18 | @EnableDiscoveryClient 19 | public class App 20 | { 21 | private static final Logger logger = LoggerFactory.getLogger(App.class); 22 | public static void main( String[] args ) 23 | { 24 | // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 25 | SpringApplication.run(App.class, args); 26 | logger.info("程序启动成功!"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sentinel/src/main/java/com/pancm/web/HelloController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | 4 | 5 | import com.alibaba.csp.sentinel.annotation.SentinelResource; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestParam; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 11 | 12 | /** 13 | * @Author pancm 14 | * @Description 官方示例文档 15 | * @Date 2024/1/26 16 | * @Param 17 | * @return 18 | **/ 19 | @RestController 20 | @RequestMapping("hello") 21 | public class HelloController { 22 | 23 | 24 | 25 | 26 | 27 | @RequestMapping(value = "/say", method = GET) 28 | @SentinelResource("hello") 29 | public String say(@RequestParam String name) { 30 | return "say "+name+ " hello !"; 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sentinel/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.banner.charset=UTF-8 2 | server.tomcat.uri-encoding=UTF-8 3 | spring.http.encoding.charset=UTF-8 4 | spring.http.encoding.enabled=true 5 | spring.http.encoding.force=true 6 | spring.messages.encoding=UTF-8 7 | server.port=8301 8 | spring.application.name=springcloud-alibaba-sentinel 9 | spring.profiles.active=dev 10 | ### 控制台地址 11 | spring.sentinel.transport.port= 8719 12 | spring.sentinel.transport.dashboard= localhost:8888 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sentinel/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 8 | 9 | 10 | 11 | 12 | 13 | 14 | ${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt 15 | 16 | 10MB 17 | 31 18 | 10GB 19 | 20 | 21 | 22 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sideca/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sideca/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 8 | 9 | 10 | /** 11 | * @Author pancm 12 | * @Description springboot集成nacos配置中心 13 | * @Date 2024/1/26 14 | * @Param 15 | * @return 16 | **/ 17 | @SpringBootApplication 18 | @EnableDiscoveryClient 19 | public class App 20 | { 21 | private static final Logger logger = LoggerFactory.getLogger(App.class); 22 | public static void main( String[] args ) 23 | { 24 | // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 25 | SpringApplication.run(App.class, args); 26 | logger.info("程序启动成功!"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sideca/src/main/java/com/pancm/web/ConfigController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.cloud.context.config.annotation.RefreshScope; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 9 | 10 | /** 11 | * @Author pancm 12 | * @Description 官方示例文档 13 | * @Date 2024/1/26 14 | * @Param 15 | * @return 16 | **/ 17 | @RestController 18 | @RequestMapping("config") 19 | @RefreshScope 20 | public class ConfigController { 21 | 22 | 23 | 24 | @Value("${pcm.name:pcm-1001}") 25 | private String name; 26 | 27 | @Value("${pcm.age:18}") 28 | private String age; 29 | 30 | 31 | @RequestMapping(value = "/getAge", method = GET) 32 | public String getAge() { 33 | return age; 34 | } 35 | 36 | @RequestMapping(value = "/getName", method = GET) 37 | public String getName() { 38 | return name; 39 | } 40 | 41 | 42 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sideca/src/main/java/com/pancm/web/DiscoveryController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import com.alibaba.nacos.api.annotation.NacosInjected; 4 | import com.alibaba.nacos.api.exception.NacosException; 5 | import com.alibaba.nacos.api.naming.NamingService; 6 | import com.alibaba.nacos.api.naming.pojo.Instance; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RequestParam; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | import java.util.List; 12 | 13 | import static org.springframework.web.bind.annotation.RequestMethod.GET; 14 | 15 | @RestController 16 | @RequestMapping("discovery") 17 | public class DiscoveryController { 18 | 19 | @NacosInjected 20 | private NamingService namingService; 21 | 22 | @RequestMapping(value = "/get", method = GET) 23 | public List get(@RequestParam String serviceName) throws NacosException { 24 | return namingService.getAllInstances(serviceName); 25 | } 26 | } -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sideca/src/main/resources/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.banner.charset=UTF-8 2 | server.tomcat.uri-encoding=UTF-8 3 | spring.http.encoding.charset=UTF-8 4 | spring.http.encoding.enabled=true 5 | spring.http.encoding.force=true 6 | spring.messages.encoding=UTF-8 7 | server.port=8299 8 | spring.application.name=springboot-nacos 9 | spring.profiles.active=dev 10 | 11 | 12 | # nacos?? 13 | nacos.discovery.autoRegister=true 14 | spring.cloud.nacos.discovery.server-addr= http://127.0.0.1:8848 15 | spring.cloud.nacos.config.server-addr= http://127.0.0.1:8848 16 | spring.cloud.nacos.config.namespace= pcm-namespace--id 17 | spring.cloud.nacos.config.group= dev 18 | spring.cloud.nacos.config.fileExtension= properties 19 | 20 | 21 | # ?????? 22 | ##???????????dataId 23 | spring.cloud.nacos.config.extension-configs[0].data-id=pcm-dev.properties 24 | ##????????????? 25 | spring.cloud.nacos.config.extension-configs[0].group=dev 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sideca/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 8 | 9 | 10 | 11 | 12 | 13 | 14 | ${LOG_HOME}/mylog-%d{yyyy-MM-dd}.%i.txt 15 | 16 | 10MB 17 | 31 18 | 10GB 19 | 20 | 21 | 22 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /springcloud-alibaba/springcloud-alibaba-sideca/src/main/resources/pcm.properties: -------------------------------------------------------------------------------- 1 | pcm.age = 24 -------------------------------------------------------------------------------- /springcloud-config-bus/config-repo/configtest-dev.properties: -------------------------------------------------------------------------------- 1 | word=hello world! -------------------------------------------------------------------------------- /springcloud-config-bus/config-repo/configtest-pro.properties: -------------------------------------------------------------------------------- 1 | word=hello world!! -------------------------------------------------------------------------------- /springcloud-config-bus/config-repo/configtest.properties: -------------------------------------------------------------------------------- 1 | word=hello world -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/src/main/java/com/pancm/ConfigClientApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | 8 | /** 9 | * 10 | * @Title: Application 11 | * @Description: 12 | * 程序入口 13 | * EnableDiscoveryClient 表示该项目就具有了服务注册的功能 14 | * @Version:1.0.0 15 | * @author pancm 16 | * @date 2018年3月29日 17 | */ 18 | @EnableDiscoveryClient 19 | @SpringBootApplication 20 | public class ConfigClientApplication { 21 | 22 | public static void main(String[] args) { 23 | SpringApplication.run(ConfigClientApplication.class, args); 24 | System.out.println("配置中心客户端启动成功!"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/src/main/java/com/pancm/web/ClientController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.cloud.context.config.annotation.RefreshScope; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RequestParam; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | /** 10 | * 11 | * @Title: ClientController 12 | * @Description: springboot 接口测试 13 | * 首先启动 Application 程序,然后在浏览器输入http://localhost:9006//hello?name=pancm 14 | * 即可查看信息 15 | * 在类中添加 @RestController, 默认类中的方法都会以json的格式返回 16 | RefreshScope: 该注解表示在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中 17 | 不过需要手动刷新,使用POST方式请求该地址就会生效:http://localhost:9006/actuator/refresh 18 | * @Version:1.0.0 19 | * @author pancm 20 | * @date 2018年1月3日 21 | */ 22 | @RestController 23 | @RefreshScope 24 | public class ClientController { 25 | 26 | @Value("${word}") 27 | private String word; 28 | 29 | @RequestMapping("/hello") 30 | public String index(@RequestParam String name) { 31 | return name+","+this.word; 32 | } 33 | } -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-config-bus-client 2 | server.port=9006 3 | 4 | # 不启用安全验证 springboot 1.x使用 5 | # management.security.enabled=false 6 | # 暴露refresh接入点 springboot 2.x使用 7 | management.endpoints.web.exposure.include=refresh 8 | 9 | ## bus 10 | #spring.cloud.config.failFast=true 11 | 12 | #spring.cloud.bus.trace.enabled = true 13 | 14 | #spring.rabbitmq.host:127.0.0.1 15 | #spring.rabbitmq.port:5672 16 | #spring.rabbitmq.username:guest 17 | #spring.rabbitmq.password:guest 18 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/src/main/resources/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.cloud.config.name=configtest 2 | spring.cloud.config.profile=pro 3 | spring.cloud.config.label=master 4 | spring.cloud.config.discovery.enabled=true 5 | spring.cloud.config.discovery.serviceId=springcloud-config-bus-server 6 | 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-config-bus-client 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/target/classes/META-INF/maven/1.0.0/springcloud-config-bus-client/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Mon Mar 25 17:39:59 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-config-bus-client 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-config-bus\\springcloud-config-bus-client 7 | artifactId=springcloud-config-bus-client 8 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-config-bus-client 2 | server.port=9006 3 | 4 | # 不启用安全验证 springboot 1.x使用 5 | # management.security.enabled=false 6 | # 暴露refresh接入点 springboot 2.x使用 7 | management.endpoints.web.exposure.include=refresh 8 | 9 | ## bus 10 | #spring.cloud.config.failFast=true 11 | 12 | #spring.cloud.bus.trace.enabled = true 13 | 14 | #spring.rabbitmq.host:127.0.0.1 15 | #spring.rabbitmq.port:5672 16 | #spring.rabbitmq.username:guest 17 | #spring.rabbitmq.password:guest 18 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client/target/classes/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.cloud.config.name=configtest 2 | spring.cloud.config.profile=pro 3 | spring.cloud.config.label=master 4 | spring.cloud.config.discovery.enabled=true 5 | spring.cloud.config.discovery.serviceId=springcloud-config-bus-server 6 | 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/src/main/java/com/pancm/ConfigClientApplication2.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | 8 | /** 9 | * 10 | * @Title: Application 11 | * @Description: 12 | * 程序入口 13 | * EnableDiscoveryClient 表示该项目就具有了服务注册的功能 14 | * @Version:1.0.0 15 | * @author pancm 16 | * @date 2018年3月29日 17 | */ 18 | @EnableDiscoveryClient 19 | @SpringBootApplication 20 | public class ConfigClientApplication2 { 21 | 22 | public static void main(String[] args) { 23 | SpringApplication.run(ConfigClientApplication2.class, args); 24 | System.out.println("配置中心第二个客户端启动成功!"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/src/main/java/com/pancm/web/ClientController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.cloud.context.config.annotation.RefreshScope; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RequestParam; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | /** 10 | * 11 | * @Title: ClientController 12 | * @Description: springboot 接口测试 13 | * 首先启动 Application 程序,然后在浏览器输入http://localhost:9006//hello?name=pancm 14 | * 即可查看信息 15 | * 在类中添加 @RestController, 默认类中的方法都会以json的格式返回 16 | RefreshScope: 该注解表示在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中 17 | 不过需要手动刷新,使用POST方式请求该地址就会生效:http://localhost:9006/actuator/refresh 18 | * @Version:1.0.0 19 | * @author pancm 20 | * @date 2018年1月3日 21 | */ 22 | @RestController 23 | @RefreshScope 24 | public class ClientController { 25 | 26 | @Value("${word}") 27 | private String word; 28 | 29 | @RequestMapping("/hello") 30 | public String index(@RequestParam String name) { 31 | return name+","+this.word; 32 | } 33 | } -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-config-bus-client2 2 | server.port=9007 3 | 4 | # 不启用安全验证 springboot 1.x使用 5 | # management.security.enabled=false 6 | # 暴露refresh接入点 springboot 2.x使用 7 | management.endpoints.web.exposure.include=refresh 8 | 9 | ## bus 10 | spring.cloud.config.failFast=true 11 | 12 | spring.cloud.bus.trace.enabled = true 13 | 14 | spring.rabbitmq.host:127.0.0.1 15 | spring.rabbitmq.port:5672 16 | spring.rabbitmq.username:guest 17 | spring.rabbitmq.password:guest 18 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/src/main/resources/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.cloud.config.name=configtest 2 | spring.cloud.config.profile=pro 3 | spring.cloud.config.label=master 4 | spring.cloud.config.discovery.enabled=true 5 | spring.cloud.config.discovery.serviceId=springcloud-config-bus-server 6 | 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-config-bus-client2 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/target/classes/META-INF/maven/1.0.0/springcloud-config-bus-client2/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Tue Mar 26 14:04:46 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-config-bus-client2 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-config-bus\\springcloud-config-bus-client2 7 | artifactId=springcloud-config-bus-client2 8 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-config-bus-client2 2 | server.port=9007 3 | 4 | # 不启用安全验证 springboot 1.x使用 5 | # management.security.enabled=false 6 | # 暴露refresh接入点 springboot 2.x使用 7 | management.endpoints.web.exposure.include=refresh 8 | 9 | ## bus 10 | spring.cloud.config.failFast=true 11 | 12 | spring.cloud.bus.trace.enabled = true 13 | 14 | spring.rabbitmq.host:127.0.0.1 15 | spring.rabbitmq.port:5672 16 | spring.rabbitmq.username:guest 17 | spring.rabbitmq.password:guest 18 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-client2/target/classes/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.cloud.config.name=configtest 2 | spring.cloud.config.profile=pro 3 | spring.cloud.config.label=master 4 | spring.cloud.config.discovery.enabled=true 5 | spring.cloud.config.discovery.serviceId=springcloud-config-bus-server 6 | 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-eureka/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-config-bus 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-config-bus-eureka 11 | springcloud-config-bus-eureka 12 | http://maven.apache.org 13 | 14 | UTF-8 15 | 16 | 17 | 18 | org.springframework.cloud 19 | spring-cloud-starter-netflix-eureka-server 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-eureka/src/main/java/com/pancm/ConfigBusEurekaApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: ConfigEurekaApplication 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @SpringBootApplication 18 | @EnableEurekaServer 19 | public class ConfigBusEurekaApplication { 20 | 21 | public static void main(String[] args) { 22 | SpringApplication.run(ConfigBusEurekaApplication.class, args); 23 | System.out.println("config bus 注册中心服务启动..."); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-eureka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-config-bus-eureka 3 | 4 | server.port=8006 5 | ## 表示是否将自己注册到Eureka Server,默认为true。 6 | eureka.client.register-with-eureka=false 7 | ## 表示是否从Eureka Server获取注册信息,默认为true。 8 | eureka.client.fetch-registry=false 9 | 10 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 11 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/ 12 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-eureka/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-eureka/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-config-bus-eureka 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-eureka/target/classes/META-INF/maven/1.0.0/springcloud-config-bus-eureka/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Tue Mar 26 08:34:50 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-config-bus-eureka 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-config-bus\\springcloud-config-bus-eureka 7 | artifactId=springcloud-config-bus-eureka 8 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-eureka/target/classes/META-INF/maven/1.0.0/springcloud-config-bus-eureka/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-config-bus 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-config-bus-eureka 11 | springcloud-config-bus-eureka 12 | http://maven.apache.org 13 | 14 | UTF-8 15 | 16 | 17 | 18 | org.springframework.cloud 19 | spring-cloud-starter-netflix-eureka-server 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-eureka/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-config-bus-eureka 3 | 4 | server.port=8006 5 | ## 表示是否将自己注册到Eureka Server,默认为true。 6 | eureka.client.register-with-eureka=false 7 | ## 表示是否从Eureka Server获取注册信息,默认为true。 8 | eureka.client.fetch-registry=false 9 | 10 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 11 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/ 12 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-server/src/main/java/com/pancm/ConfigServerApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | import org.springframework.cloud.config.server.EnableConfigServer; 8 | /** 9 | * 10 | * @Title: ConfigServerApplication 11 | * @Description: 12 | * 程序入口 13 | * EnableDiscoveryClient: 启用服务注册与发现 14 | EnableConfigServer: 启用config配置中心 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年3月29日 18 | */ 19 | @EnableDiscoveryClient 20 | @EnableConfigServer 21 | @SpringBootApplication 22 | public class ConfigServerApplication { 23 | 24 | public static void main(String[] args) { 25 | SpringApplication.run(ConfigServerApplication.class, args); 26 | System.out.println("配置中心服务端启动成功!"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-server/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-config-bus-server 3 | 4 | server.port=9005 5 | 6 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 8 | 9 | ## 读取本地文件 10 | spring.profiles.active=native 11 | 12 | 13 | ## 读取git的路径 14 | # git仓库的地址 15 | spring.cloud.config.server.git.uri = https://github.com/xuwujing/springcloud-study/ 16 | # git仓库地址下的相对地址 多个用逗号","分割 17 | spring.cloud.config.server.git.search-paths = /springcloud-config-bus/config-repo 18 | # git仓库的账号 19 | spring.cloud.config.server.git.username = 20 | # git仓库的密码 21 | spring.cloud.config.server.git.password = 22 | 23 | # management.endpoints.web.exposure.include: bus-refresh 24 | management.endpoints.web.exposure.include=bus-refresh 25 | ## bus 26 | 27 | spring.cloud.bus.enabled = true 28 | # 失败快速响应 29 | spring.cloud.bus.trace.enabled = true 30 | 31 | spring.rabbitmq.host:127.0.0.1 32 | spring.rabbitmq.port:5672 33 | spring.rabbitmq.username:guest 34 | spring.rabbitmq.password:guest 35 | 36 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-server/src/main/resources/configtest-pro.properties: -------------------------------------------------------------------------------- 1 | word=hello!!! -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-server/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-server/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-config-bus-server 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-server/target/classes/META-INF/maven/1.0.0/springcloud-config-bus-server/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Mon Mar 25 17:40:00 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-config-bus-server 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-config-bus\\springcloud-config-bus-server 7 | artifactId=springcloud-config-bus-server 8 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-server/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-config-bus-server 3 | 4 | server.port=9005 5 | 6 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 8 | 9 | ## 读取本地文件 10 | spring.profiles.active=native 11 | 12 | 13 | ## 读取git的路径 14 | # git仓库的地址 15 | # spring.cloud.config.server.git.uri = https://github.com/xuwujing/springcloud-study/ 16 | # git仓库地址下的相对地址 多个用逗号","分割 17 | # spring.cloud.config.server.git.search-paths = /springcloud-config/config-repo 18 | # git仓库的账号 19 | # spring.cloud.config.server.git.username = 20 | # git仓库的密码 21 | # spring.cloud.config.server.git.password = 22 | 23 | management.endpoints.web.exposure.include: bus-refresh 24 | ## bus 25 | 26 | spring.cloud.bus.enabled = true 27 | # 失败快速响应 28 | spring.cloud.bus.trace.enabled = true 29 | 30 | spring.rabbitmq.host:127.0.0.1 31 | spring.rabbitmq.port:5672 32 | spring.rabbitmq.username:guest 33 | spring.rabbitmq.password:guest 34 | 35 | -------------------------------------------------------------------------------- /springcloud-config-bus/springcloud-config-bus-server/target/classes/configtest.properties: -------------------------------------------------------------------------------- 1 | word=hello world!!! -------------------------------------------------------------------------------- /springcloud-config-bus/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /springcloud-config/README.md: -------------------------------------------------------------------------------- 1 | ## springcloud-config 2 | 3 | ### 介绍 4 | 5 | > Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。 6 | 7 | 8 | ### 使用 9 | 10 | 11 | 依次运行 springcloud-config-eureka、springcloud-config-server和springcloud-config-config。启动成功之后,在浏览器输入 `http://localhost:8005/` 进行查看相关信息! 12 | 13 | 14 | **本地配置文件读取测试** 15 | 16 | 在 springcloud-config-server项目中的**application.properties** 将 `spring.profiles.active=native` 该配置的注释解开,然后启动程序。 17 | 18 | 启动成功之后在浏览器输入: 19 | > http://localhost:9005/configtest/word 20 | 21 | 即可查看配置的读取信息! 22 | 23 | **Git配置文件读取测试** 24 | 25 | 在 `springcloud-config-server`项目中的**application.properties** 将 `spring.cloud.config.server.git` 配置的信息填写完成,然后启动程序。 26 | 27 | 启动成功之后在浏览器输入: 28 | > http://localhost:9005/configtest/word 29 | 30 | 或 31 | 32 | > http://localhost:9005/configtest-pro.properties 33 | 34 | 即可查看配置的读取信息! 35 | 36 | 37 | 38 | **客户端配置文件读取测试** 39 | 40 | 启动 `springcloud-config-config` 程序后,在浏览器输入: 41 | 42 | > http://localhost:9006/hello?name=pancm 43 | 44 | 即可查看客户端读取配置中心的配置! -------------------------------------------------------------------------------- /springcloud-config/config-repo/configtest-dev.properties: -------------------------------------------------------------------------------- 1 | word=hello world! -------------------------------------------------------------------------------- /springcloud-config/config-repo/configtest-pro.properties: -------------------------------------------------------------------------------- 1 | word=hello world!! -------------------------------------------------------------------------------- /springcloud-config/config-repo/configtest.properties: -------------------------------------------------------------------------------- 1 | word=hello world -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-config 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-config-client 11 | springcloud-config-client 12 | http://maven.apache.org 13 | 14 | 15 | 16 | 17 | org.springframework.boot 18 | spring-boot-starter-web 19 | 20 | 21 | org.springframework.cloud 22 | spring-cloud-starter-netflix-eureka-client 23 | 24 | 25 | org.springframework.cloud 26 | spring-cloud-starter-config 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | org.springframework.boot 35 | spring-boot-maven-plugin 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/src/main/java/com/pancm/ConfigClientApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | 8 | /** 9 | * 10 | * @Title: Application 11 | * @Description: 12 | * 程序入口 13 | * EnableDiscoveryClient 表示该项目就具有了服务注册的功能 14 | * @Version:1.0.0 15 | * @author pancm 16 | * @date 2018年3月29日 17 | */ 18 | @EnableDiscoveryClient 19 | @SpringBootApplication 20 | public class ConfigClientApplication { 21 | 22 | public static void main(String[] args) { 23 | SpringApplication.run(ConfigClientApplication.class, args); 24 | System.out.println("配置中心客户端启动成功!"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/src/main/java/com/pancm/web/ClientController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.web; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RequestParam; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | * 10 | * @Title: ClientController 11 | * @Description: springboot 接口测试 12 | * 首先启动 Application 程序,然后在浏览器输入http://localhost:9006//hello?name=pancm 13 | * 即可查看信息 14 | * 在类中添加 @RestController, 默认类中的方法都会以json的格式返回 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年1月3日 18 | */ 19 | @RestController 20 | public class ClientController { 21 | 22 | @Value("${word}") 23 | private String word; 24 | 25 | @RequestMapping("/hello") 26 | public String index(@RequestParam String name) { 27 | return name+","+this.word; 28 | } 29 | } -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-config-client 2 | server.port=9006 3 | 4 | 5 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/src/main/resources/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.cloud.config.name=configtest 2 | spring.cloud.config.profile=pro 3 | spring.cloud.config.label=master 4 | spring.cloud.config.discovery.enabled=true 5 | spring.cloud.config.discovery.serviceId=springcloud-config-server 6 | 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/ 8 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-config-client 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/target/classes/META-INF/maven/1.0.0/springcloud-config-client/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Jan 04 09:33:40 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-config-client 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-config\\springcloud-config-client 7 | artifactId=springcloud-config-client 8 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-config-client 2 | server.port=9006 3 | 4 | 5 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-client/target/classes/bootstrap.properties: -------------------------------------------------------------------------------- 1 | spring.cloud.config.name=configtest 2 | spring.cloud.config.profile=pro 3 | spring.cloud.config.label=master 4 | spring.cloud.config.discovery.enabled=true 5 | spring.cloud.config.discovery.serviceId=springcloud-config-server 6 | 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/ -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-eureka/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-config 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-config-eureka 11 | springcloud-config-eureka 12 | http://maven.apache.org 13 | 14 | UTF-8 15 | 16 | 17 | 18 | org.springframework.cloud 19 | spring-cloud-starter-netflix-eureka-server 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-eureka/src/main/java/com/pancm/ConfigEurekaApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: ConfigEurekaApplication 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @SpringBootApplication 18 | @EnableEurekaServer 19 | public class ConfigEurekaApplication { 20 | 21 | public static void main(String[] args) { 22 | SpringApplication.run(ConfigEurekaApplication.class, args); 23 | System.out.println("config 注册中心服务启动..."); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-eureka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-config-eureka 3 | 4 | server.port=8005 5 | ## 表示是否将自己注册到Eureka Server,默认为true。 6 | eureka.client.register-with-eureka=false 7 | ## 表示是否从Eureka Server获取注册信息,默认为true。 8 | eureka.client.fetch-registry=false 9 | 10 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 11 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/ 12 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-eureka/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-eureka/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-config-eureka 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-eureka/target/classes/META-INF/maven/1.0.0/springcloud-config-eureka/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Jan 04 09:14:30 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-config-eureka 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-config\\springcloud-config-eureka 7 | artifactId=springcloud-config-eureka 8 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-eureka/target/classes/META-INF/maven/1.0.0/springcloud-config-eureka/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-config 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-config-eureka 11 | springcloud-config-eureka 12 | http://maven.apache.org 13 | 14 | UTF-8 15 | 16 | 17 | 18 | org.springframework.cloud 19 | spring-cloud-starter-netflix-eureka-server 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-eureka/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-config-eureka 3 | 4 | server.port=8005 5 | ## 表示是否将自己注册到Eureka Server,默认为true。 6 | eureka.client.register-with-eureka=false 7 | ## 表示是否从Eureka Server获取注册信息,默认为true。 8 | eureka.client.fetch-registry=false 9 | 10 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 11 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/ 12 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-config 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-config-server 11 | springcloud-config-server 12 | http://maven.apache.org 13 | 14 | 15 | org.springframework.cloud 16 | spring-cloud-config-server 17 | 18 | 19 | org.springframework.cloud 20 | spring-cloud-starter-netflix-eureka-server 21 | 22 | 23 | 24 | 25 | 26 | 27 | org.springframework.boot 28 | spring-boot-maven-plugin 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/src/main/java/com/pancm/ConfigServerApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | import org.springframework.cloud.config.server.EnableConfigServer; 8 | /** 9 | * 10 | * @Title: ConfigServerApplication 11 | * @Description: 12 | * 程序入口 13 | * EnableDiscoveryClient: 启用服务注册与发现 14 | EnableConfigServer: 启用config配置中心 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年3月29日 18 | */ 19 | @EnableDiscoveryClient 20 | @EnableConfigServer 21 | @SpringBootApplication 22 | public class ConfigServerApplication { 23 | 24 | public static void main(String[] args) { 25 | SpringApplication.run(ConfigServerApplication.class, args); 26 | System.out.println("配置中心服务端启动成功!"); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-config-server 3 | 4 | server.port=9005 5 | 6 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/ 8 | 9 | ## 读取本地文件 10 | # spring.profiles.active=native 11 | 12 | 13 | ## 读取git的路径 14 | # git仓库的地址 15 | spring.cloud.config.server.git.uri = https://github.com/xuwujing/springcloud-study/ 16 | # git仓库地址下的相对地址 多个用逗号","分割 17 | spring.cloud.config.server.git.search-paths = /springcloud-config/config-repo 18 | # git仓库的账号 19 | spring.cloud.config.server.git.username = 20 | # git仓库的密码 21 | spring.cloud.config.server.git.password = 22 | 23 | 24 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/src/main/resources/configtest.properties: -------------------------------------------------------------------------------- 1 | word=hello world -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-config-server 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/target/classes/META-INF/maven/1.0.0/springcloud-config-server/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Jan 04 10:10:12 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-config-server 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-config\\springcloud-config-server 7 | artifactId=springcloud-config-server 8 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/target/classes/META-INF/maven/1.0.0/springcloud-config-server/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-config 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-config-server 11 | springcloud-config-server 12 | http://maven.apache.org 13 | 14 | 15 | org.springframework.cloud 16 | spring-cloud-config-server 17 | 18 | 19 | org.springframework.cloud 20 | spring-cloud-starter-netflix-eureka-server 21 | 22 | 23 | 24 | 25 | 26 | 27 | org.springframework.boot 28 | spring-boot-maven-plugin 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-config-server 3 | 4 | server.port=9005 5 | 6 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/ 8 | 9 | ## 读取本地文件 10 | # spring.profiles.active=native 11 | 12 | 13 | ## 读取git的路径 14 | # git仓库的地址 15 | spring.cloud.config.server.git.uri = https://github.com/xuwujing/springcloud-study/ 16 | # git仓库地址下的相对地址 多个用逗号","分割 17 | spring.cloud.config.server.git.search-paths = /springcloud-config/config-repo 18 | # git仓库的账号 19 | spring.cloud.config.server.git.username = 20 | # git仓库的密码 21 | spring.cloud.config.server.git.password = 22 | 23 | 24 | -------------------------------------------------------------------------------- /springcloud-config/springcloud-config-server/target/classes/configtest.properties: -------------------------------------------------------------------------------- 1 | word=hello world -------------------------------------------------------------------------------- /springcloud-config/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /springcloud-config/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-eureka/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xuwujing/springcloud-study/fbf3ce7c334771c3a73b473db1630d19d3764079/springcloud-eureka/.gitignore -------------------------------------------------------------------------------- /springcloud-eureka/README.md: -------------------------------------------------------------------------------- 1 | ## springcloud-eureka 2 | 3 | ### 介绍 4 | 5 | > Eureka是Netflix开源的一款提供服务注册和发现的产品,它提供了完整的Service Registry和Service Discovery实现。也是springcloud体系中最重要最核心的组件之一。 6 | 7 | 8 | ### 使用 9 | 10 | 11 | 先运行 springboot-eureka-server 项目,启动成功之后在浏览器输入 `http://localhost:8000/` 即可查看springcloud界面。然后在启动springboot-eureka-client 项目,刷新界面,在` Instances currently registered with Eureka` 查看该服务信息。 12 | 13 | 14 | ### 高可用注册中心使用 15 | 16 | 在当前的系统的host文件中添加如下配置: 17 | 18 | 127.0.0.1 server2 19 | 127.0.0.1 server3 20 | 21 | 22 | **hosts文件地址:** 23 | 24 | Windows 系统地址:`C:\Windows\System32\drivers\etc\hosts` 25 | 26 | Linux系统地址: `/etc/hosts` 27 | 28 | 29 | 配置完成之后,启动`springboot-eureka-server2`和`springboot-eureka-server3`这两个服务,然后在浏览器输入: 30 | `http://server2:8002/` 31 | 或 32 | `http://server3:8003/` 33 | 即可查看信息. 34 | 35 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-client/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 程序入口 EnableDiscoveryClient 表示该项目就具有了服务注册的功能 11 | * @Version:1.0.0 12 | * @author pancm 13 | * @date 2018年3月29日 14 | */ 15 | @SpringBootApplication 16 | @EnableDiscoveryClient 17 | public class App { 18 | 19 | public static void main(String[] args) { 20 | SpringApplication.run(App.class, args); 21 | System.out.println("客户端服务启动..."); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-client/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-client 3 | server.port=9001 4 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 5 | eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ 6 | 7 | 8 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-client/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springboot-eureka-client 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-client/target/classes/META-INF/maven/1.0.0/springboot-eureka-client/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Thu Dec 20 16:17:45 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springboot-eureka-client 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-eureka\\springboot-eureka-client 7 | artifactId=springboot-eureka-client 8 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-client/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springboot-eureka-client 3 | server.port=9001 4 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 5 | eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ 6 | 7 | 8 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 4.0.0 7 | 8 | 1.0.0 9 | springcloud-eureka 10 | 0.0.1-SNAPSHOT 11 | 12 | 13 | springboot-eureka-server 14 | springboot-eureka-server 15 | http://maven.apache.org 16 | 17 | UTF-8 18 | 19 | 20 | 21 | org.springframework.cloud 22 | spring-cloud-starter-netflix-eureka-server 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | 在浏览器输入http://localhost:8000 即可查看相关信息 14 | * @Version:1.0.0 15 | * @author pancm 16 | * @date 2018年3月29日 17 | */ 18 | @EnableEurekaServer 19 | @SpringBootApplication 20 | public class App { 21 | public static void main(String[] args) { 22 | SpringApplication.run(App.class, args); 23 | System.out.println("注册中心服务启动..."); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8000 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springboot-eureka-server 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server/target/classes/META-INF/maven/1.0.0/springboot-eureka-server/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Thu Dec 20 16:17:47 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springboot-eureka-server 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-eureka\\springboot-eureka-server 7 | artifactId=springboot-eureka-server 8 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server/target/classes/META-INF/maven/1.0.0/springboot-eureka-server/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 4.0.0 7 | 8 | 1.0.0 9 | springcloud-eureka 10 | 0.0.1-SNAPSHOT 11 | 12 | 13 | springboot-eureka-server 14 | springboot-eureka-server 15 | http://maven.apache.org 16 | 17 | UTF-8 18 | 19 | 20 | 21 | org.springframework.cloud 22 | spring-cloud-starter-netflix-eureka-server 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springboot-eureka-server 3 | 4 | server.port=8000 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 4.0.0 7 | 8 | 1.0.0 9 | springcloud-eureka 10 | 0.0.1-SNAPSHOT 11 | 12 | 13 | springboot-eureka-server2 14 | springboot-eureka-server2 15 | http://maven.apache.org 16 | 17 | UTF-8 18 | 19 | 20 | 21 | org.springframework.cloud 22 | spring-cloud-starter-netflix-eureka-server 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server2/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @EnableEurekaServer 17 | @SpringBootApplication 18 | public class App { 19 | public static void main(String[] args) { 20 | SpringApplication.run(App.class, args); 21 | System.out.println("第二个注册中心服务启动..."); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8002 5 | eureka.instance.hostname = server2 6 | 7 | ## 这里设置另一个Eureka Server交互的地址,如果是多个就通过 ","逗号隔开 8 | eureka.client.serviceUrl.defaultZone=http://server3:8003/eureka/ 9 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server2/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springboot-eureka-server2 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server2/target/classes/META-INF/maven/1.0.0/springboot-eureka-server2/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Jan 11 16:04:26 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springboot-eureka-server2 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-eureka\\springboot-eureka-server2 7 | artifactId=springboot-eureka-server2 8 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server2/target/classes/META-INF/maven/1.0.0/springboot-eureka-server2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 4.0.0 7 | 8 | 1.0.0 9 | springcloud-eureka 10 | 0.0.1-SNAPSHOT 11 | 12 | 13 | springboot-eureka-server2 14 | springboot-eureka-server2 15 | http://maven.apache.org 16 | 17 | UTF-8 18 | 19 | 20 | 21 | org.springframework.cloud 22 | spring-cloud-starter-netflix-eureka-server 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server2/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8002 5 | eureka.instance.hostname = server2 6 | 7 | ## 这里设置另一个Eureka Server交互的地址,如果是多个就通过 ","逗号隔开 8 | eureka.client.serviceUrl.defaultZone=http://server3:8003/eureka/ 9 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server3/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 4.0.0 7 | 8 | 1.0.0 9 | springcloud-eureka 10 | 0.0.1-SNAPSHOT 11 | 12 | 13 | springboot-eureka-server3 14 | springboot-eureka-server3 15 | http://maven.apache.org 16 | 17 | UTF-8 18 | 19 | 20 | 21 | org.springframework.cloud 22 | spring-cloud-starter-netflix-eureka-server 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server3/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @EnableEurekaServer 17 | @SpringBootApplication 18 | public class App { 19 | public static void main(String[] args) { 20 | SpringApplication.run(App.class, args); 21 | System.out.println("第三个注册中心服务启动..."); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server3/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8003 5 | eureka.instance.hostname = server3 6 | 7 | ## 这里设置另一个Eureka Server交互的地址,如果是多个就通过 ","逗号隔开 8 | eureka.client.serviceUrl.defaultZone=http://server2:8002/eureka/ 9 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server3/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springboot-eureka-server3 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server3/target/classes/META-INF/maven/1.0.0/springboot-eureka-server3/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Jan 11 16:04:47 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springboot-eureka-server3 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-eureka\\springboot-eureka-server3 7 | artifactId=springboot-eureka-server3 8 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server3/target/classes/META-INF/maven/1.0.0/springboot-eureka-server3/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 4.0.0 7 | 8 | 1.0.0 9 | springcloud-eureka 10 | 0.0.1-SNAPSHOT 11 | 12 | 13 | springboot-eureka-server3 14 | springboot-eureka-server3 15 | http://maven.apache.org 16 | 17 | UTF-8 18 | 19 | 20 | 21 | org.springframework.cloud 22 | spring-cloud-starter-netflix-eureka-server 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /springcloud-eureka/springboot-eureka-server3/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8003 5 | eureka.instance.hostname = server3 6 | 7 | ## 这里设置另一个Eureka Server交互的地址,如果是多个就通过 ","逗号隔开 8 | eureka.client.serviceUrl.defaultZone=http://server2:8002/eureka/ 9 | -------------------------------------------------------------------------------- /springcloud-eureka/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /springcloud-feign/README.md: -------------------------------------------------------------------------------- 1 | ## springcloud-feign 2 | 3 | ### 介绍 4 | 5 | > Feign是一个声明式Web Service客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。 6 | 7 | 8 | ### 使用 9 | 10 | 11 | 依次运行 springcloud-feign-eureka、springcloud-feign-consumer和springcloud-feign-consumer2项目。启动成功之后,在浏览器输入 `http://localhost:8001/` 进行查看相关信息! 12 | 13 | 14 | **服务调用测试** 15 | 16 | 17 | 启动成功之后在浏览器先输入: 18 | > http://localhost:9003/hello?name=pancm 19 | 20 | 查询是否能够成功启动, 21 | 然后再输入: 22 | > http://localhost:9002/hello/pancm 23 | 24 | 返回结果: 25 | 26 | pancm,Hello World 27 | pancm,Hello World 28 | 29 | 30 | 出现以上结果说明客户端已经成功的通过feign调用了远程服务hello,并且将结果返回到了浏览器。 31 | 32 | 33 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/src/main/java/com/pancm/FeignConsumerApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | import org.springframework.cloud.openfeign.EnableFeignClients; 7 | 8 | /** 9 | * 10 | * @Title: Application 11 | * @Description: 12 | * 程序入口 13 | * EnableDiscoveryClient: 启用服务注册与发现 14 | EnableFeignClients: 启用feign进行远程调用 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年3月29日 18 | */ 19 | @SpringBootApplication 20 | @EnableDiscoveryClient 21 | @EnableFeignClients 22 | public class FeignConsumerApplication { 23 | public static void main(String[] args) { 24 | SpringApplication.run(FeignConsumerApplication.class, args); 25 | System.out.println("feign第一个消费者服务启动..."); 26 | } 27 | } -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.web.bind.annotation.PathVariable; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | import com.pancm.remote.HelloRemote; 9 | 10 | 11 | 12 | 13 | 14 | /** 15 | * 16 | * @Title: ConsumerController 17 | * @Description: 18 | * 用于做转发请求 19 | * 通过服务注册中心转发到另一个服务区 20 | * 例如: 21 | * 将http://localhost:9002//hello/pancm 请求转发到 http://localhost:9003//hello?name=pancm 22 | * @Version:1.0.0 23 | * @author pancm 24 | * @date 2018年3月29日 25 | */ 26 | @RestController 27 | public class ConsumerController { 28 | 29 | @Autowired 30 | HelloRemote helloRemote; 31 | 32 | @RequestMapping("/hello/{name}") 33 | public String index(@PathVariable("name") String name) { 34 | System.out.println("接受到请求参数:"+name+",进行转发到其他服务"); 35 | return helloRemote.hello(name); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/src/main/java/com/pancm/remote/HelloRemote.java: -------------------------------------------------------------------------------- 1 | package com.pancm.remote; 2 | 3 | import org.springframework.cloud.openfeign.FeignClient; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RequestParam; 6 | 7 | 8 | /** 9 | * 10 | * @Title: HelloRemote 11 | * @Description: 12 | * Feign可以与Eureka和Ribbon组合使用以支持负载均衡。 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @FeignClient(name= "springcloud-feign-consumer2") //指定转发的服务名称,在application.properties中进行配置 18 | public interface HelloRemote { 19 | @RequestMapping(value = "/hello") 20 | public String hello(@RequestParam(value = "name") String name); 21 | } 22 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/src/main/java/com/pancm/remote/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.remote; -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-feign-consumer 3 | 4 | server.port=9002 5 | 6 | 7 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 8 | eureka.client.serviceUrl.defaultZone=http://localhost:8001/eureka/ 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-feign-consumer 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/target/classes/META-INF/maven/1.0.0/springcloud-feign-consumer/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Thu Dec 20 17:51:02 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-feign-consumer 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-feign\\springcloud-feign-consumer 7 | artifactId=springcloud-feign-consumer 8 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-consumer 3 | 4 | server.port=9002 5 | 6 | 7 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 8 | eureka.client.serviceUrl.defaultZone=http://localhost:8001/eureka/ 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer2/src/main/java/com/pancm/FeignConsumerApplication2.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * 程序入口 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @SpringBootApplication 17 | @EnableDiscoveryClient 18 | public class FeignConsumerApplication2 { 19 | public static void main(String[] args) { 20 | SpringApplication.run(FeignConsumerApplication2.class, args); 21 | System.out.println("feign第二个消费者服务启动..."); 22 | } 23 | } -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer2/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.RequestMapping; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hello") 20 | public String index(@RequestParam String name) { 21 | return name+",Hello World"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer2/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-feign-consumer2 3 | 4 | server.port=9003 5 | 6 | 7 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 8 | eureka.client.serviceUrl.defaultZone=http://localhost:8001/eureka/ 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer2/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer2/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-feign-consumer2 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer2/target/classes/META-INF/maven/1.0.0/springcloud-feign-consumer2/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Thu Dec 20 17:48:39 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-feign-consumer2 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-feign\\springcloud-feign-consumer2 7 | artifactId=springcloud-feign-consumer2 8 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-consumer2/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-consumer2 3 | 4 | server.port=9003 5 | 6 | 7 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 8 | eureka.client.serviceUrl.defaultZone=http://localhost:8001/eureka/ 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-eureka/src/main/java/com/pancm/FeignEurekaApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @EnableEurekaServer 18 | @SpringBootApplication 19 | public class FeignEurekaApplication { 20 | public static void main(String[] args) { 21 | SpringApplication.run(FeignEurekaApplication.class, args); 22 | System.out.println("feign注册中心服务启动..."); 23 | } 24 | } -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-eureka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-feign-eureka-server 3 | 4 | server.port=8001 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-eureka/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-eureka/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-feign-eureka 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-eureka/target/classes/META-INF/maven/1.0.0/springcloud-feign-eureka/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Thu Dec 20 17:47:41 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-feign-eureka 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-feign\\springcloud-feign-eureka 7 | artifactId=springcloud-feign-eureka 8 | -------------------------------------------------------------------------------- /springcloud-feign/springcloud-feign-eureka/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8001 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-feign/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/README.md: -------------------------------------------------------------------------------- 1 | ## springcloud-hystrix-dashboard 2 | 3 | ### 介绍 4 | 5 | > Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数据。Turbine服务,专门监控所有断路器状态,从而掌握整个系统中所有微服务的状态。 6 | 7 | 8 | ### 使用 9 | 10 | 依次运行springcloud-hystrix-dashboard-eureka和springcloud-hystrix-dashboard-consumer项目。启动成功之后,在浏览器输入 `http://localhost:9010/hystrix` ,然后在界面中的输入框中输入:`http://localhost:9010/hystrix.stream`,即可查看hystrix界面的信息,如果提示loading,那么在浏览器中输入:`http://localhost:9010/hello/pancm`进行访问,然后再刷新该界面即可查看信息! 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/java/com/pancm/HystrixDashboardApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; 8 | import org.springframework.cloud.openfeign.EnableFeignClients; 9 | 10 | /** 11 | * 12 | * @Title: Application 13 | * @Description: 14 | * 程序入口 15 | * EnableDiscoveryClient: 启用服务注册与发现 16 | EnableHystrixDashboard 启用 HystrixDashboard 断路器看板 相关配置 17 | EnableCircuitBreaker 启用hystrix 18 | 在浏览器输入 http://localhost:9010/hystrix 19 | 然后在到界面提示的地址输入: http://localhost:9010/hystrix.stream 20 | 如果提示loading,那么使没有进行访问,在浏览器输入:http://localhost:9010/hello/pancm 进行访问之后 21 | 刷新该界面就可以看到了 22 | * @Version:1.0.0 23 | * @author pancm 24 | * @date 2018年3月29日 25 | */ 26 | @SpringBootApplication 27 | @EnableDiscoveryClient 28 | @EnableHystrixDashboard 29 | @EnableCircuitBreaker 30 | @EnableFeignClients 31 | public class HystrixDashboardApplication { 32 | public static void main(String[] args) { 33 | SpringApplication.run(HystrixDashboardApplication.class, args); 34 | System.out.println("hystrix dashboard 服务启动..."); 35 | } 36 | } -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/java/com/pancm/config/HystrixServlet.java: -------------------------------------------------------------------------------- 1 | package com.pancm.config; 2 | 3 | import org.springframework.boot.autoconfigure.web.ServerProperties.Servlet; 4 | import org.springframework.boot.web.servlet.ServletRegistrationBean; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.stereotype.Component; 7 | 8 | import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet; 9 | 10 | /** 11 | * @Title: HystrixServlet 12 | * @Description: 初始化Hystrix的bean 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年12月24日 16 | */ 17 | @Component 18 | public class HystrixServlet extends Servlet{ 19 | 20 | 21 | 22 | /** 23 | * 指定 hystrix 的路径 24 | * @return 25 | */ 26 | @SuppressWarnings({ "rawtypes", "unchecked" }) 27 | // @Bean 28 | public ServletRegistrationBean getServlet() { 29 | HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet(); 30 | ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet); 31 | registrationBean.setLoadOnStartup(1); 32 | registrationBean.addUrlMappings("/hystrix.stream"); 33 | registrationBean.setName("HystrixMetricsStreamServlet"); 34 | return registrationBean; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/java/com/pancm/config/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月24日 7 | */ 8 | package com.pancm.config; -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.web.bind.annotation.PathVariable; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | import com.pancm.remote.HelloRemote; 9 | 10 | 11 | 12 | 13 | 14 | /** 15 | * 16 | * @Title: ConsumerController 17 | * @Description: 18 | * @Version:1.0.0 19 | * @author pancm 20 | * @date 2018年3月29日 21 | */ 22 | @RestController 23 | public class ConsumerController { 24 | 25 | @Autowired 26 | HelloRemote helloRemote; 27 | 28 | @RequestMapping("/hello/{name}") 29 | public String index(@PathVariable("name") String name) { 30 | System.out.println("接受到请求参数:"+name); 31 | return helloRemote.hello(name); 32 | } 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/java/com/pancm/remote/HelloRemote.java: -------------------------------------------------------------------------------- 1 | package com.pancm.remote; 2 | 3 | import org.springframework.cloud.openfeign.FeignClient; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RequestParam; 6 | 7 | 8 | /** 9 | * 10 | * @Title: HelloRemote 11 | * @Description: 12 | * Feign可以与Eureka和Ribbon组合使用以支持负载均衡。 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @FeignClient(name= "springcloud-hystrix-dashboard-consumer2") //指定转发的服务名称,在application.properties中进行配置 18 | public interface HelloRemote { 19 | @RequestMapping(value = "/hello") 20 | public String hello(@RequestParam(value = "name") String name); 21 | } 22 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/java/com/pancm/remote/HelloRemoteHystrix.java: -------------------------------------------------------------------------------- 1 | package com.pancm.remote; 2 | 3 | import org.springframework.stereotype.Component; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | 6 | /** 7 | * 8 | * @Title: HelloRemoteHystrix 9 | * @Description: 10 | * 熔断机制 11 | * 当服务生产者停止服务之后,调用 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @Component 17 | public class HelloRemoteHystrix implements HelloRemote{ 18 | 19 | @Override 20 | public String hello(@RequestParam(value = "name") String name) { 21 | return name+", 请求另一个服务失败!"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/java/com/pancm/remote/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.remote; -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-dashboard-consumer 3 | 4 | server.port = 9010 5 | 6 | feign.hystrix.enabled=true 7 | ## 指定hystrixDashboard路径 8 | management.endpoints.web.exposure.include=hystrix.stream 9 | management.endpoints.web.base-path=/ 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://localhost:8004/eureka/ 13 | 14 | 15 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-hystrix-consumer 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-dashboard-consumer/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Feb 15 16:12:10 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-hystrix-dashboard-consumer 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-hystrix-dashboard\\springcloud-hystrix-dashboard-consumer 7 | artifactId=springcloud-hystrix-dashboard-consumer 8 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-dashboard-consumer 3 | 4 | server.port = 9010 5 | 6 | feign.hystrix.enabled=true 7 | ## 指定hystrixDashboard路径 8 | management.endpoints.web.exposure.include=hystrix.stream 9 | management.endpoints.web.base-path=/ 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://localhost:8004/eureka/ 13 | 14 | 15 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer2/src/main/java/com/pancm/HystrixConsumerApplication2.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; 6 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 7 | import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; 8 | 9 | /** 10 | * 11 | * @Title: Application 12 | * @Description: 13 | * 程序入口 14 | * @Version:1.0.0 15 | * @author pancm 16 | * @date 2018年3月29日 17 | */ 18 | @SpringBootApplication 19 | @EnableDiscoveryClient 20 | @EnableHystrixDashboard 21 | @EnableCircuitBreaker 22 | public class HystrixConsumerApplication2 { 23 | public static void main(String[] args) { 24 | SpringApplication.run(HystrixConsumerApplication2.class, args); 25 | System.out.println("hystrix dashboard 第二个消费者服务启动..."); 26 | } 27 | } -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer2/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.PathVariable; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | 8 | 9 | 10 | 11 | /** 12 | * 13 | * @Title: ConsumerController 14 | * @Description: 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年3月29日 18 | */ 19 | @RestController 20 | public class ConsumerController { 21 | 22 | 23 | @RequestMapping("/hello/{name}") 24 | public String index(@PathVariable("name") String name) { 25 | System.out.println("接受到请求参数:"+name); 26 | return "你好,"+name; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer2/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-dashboard-consumer2 3 | 4 | server.port=9011 5 | 6 | 7 | ## 指定hystrixDashboard路径 8 | management.endpoints.web.exposure.include=hystrix.stream 9 | management.endpoints.web.base-path=/ 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://localhost:8004/eureka/ 13 | 14 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer2/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer2/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-hystrix-consumer2 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer2/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-dashboard-consumer2/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Feb 15 13:48:48 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-hystrix-dashboard-consumer2 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-hystrix-dashboard\\springcloud-hystrix-dashboard-consumer2 7 | artifactId=springcloud-hystrix-dashboard-consumer2 8 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-consumer2/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-dashboard-consumer2 3 | 4 | server.port=9011 5 | 6 | 7 | ## 指定hystrixDashboard路径 8 | management.endpoints.web.exposure.include=hystrix.stream 9 | management.endpoints.web.base-path=/ 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://localhost:8004/eureka/ 13 | 14 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-eureka/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-hystrix-dashboard 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-hystrix-dashboard-eureka 11 | springcloud-eureka-hystrix 12 | http://maven.apache.org 13 | 14 | UTF-8 15 | 16 | 17 | 18 | 19 | org.springframework.cloud 20 | spring-cloud-starter-netflix-eureka-server 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-eureka/src/main/java/com/pancm/HystrixEurekaApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @EnableEurekaServer 18 | @SpringBootApplication 19 | public class HystrixEurekaApplication { 20 | public static void main(String[] args) { 21 | SpringApplication.run(HystrixEurekaApplication.class, args); 22 | System.out.println("hystrix dashboard 注册中心服务启动..."); 23 | } 24 | } -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-eureka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-eureka-server 3 | 4 | server.port=8004 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-eureka/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-eureka/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-eureka-hystrix 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-eureka/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-dashboard-eureka/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Feb 15 10:40:07 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-hystrix-dashboard-eureka 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-hystrix-dashboard\\springcloud-hystrix-dashboard-eureka 7 | artifactId=springcloud-hystrix-dashboard-eureka 8 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-eureka/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-dashboard-eureka/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-hystrix-dashboard 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-hystrix-dashboard-eureka 11 | springcloud-eureka-hystrix 12 | http://maven.apache.org 13 | 14 | UTF-8 15 | 16 | 17 | 18 | 19 | org.springframework.cloud 20 | spring-cloud-starter-netflix-eureka-server 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-eureka/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-eureka-server 3 | 4 | server.port=8004 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-turbine/src/main/java/com/pancm/HystrixTurbineApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; 7 | import org.springframework.cloud.netflix.turbine.EnableTurbine; 8 | 9 | /** 10 | * 11 | * @Title: Application 12 | * @Description: 13 | EnableTurbine: 开启turbine服务 14 | 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年3月29日 18 | */ 19 | @SpringBootApplication 20 | @EnableDiscoveryClient 21 | @EnableHystrixDashboard 22 | @EnableTurbine 23 | public class HystrixTurbineApplication { 24 | public static void main(String[] args) { 25 | SpringApplication.run(HystrixTurbineApplication.class, args); 26 | System.out.println("hystrix turbine 服务启动..."); 27 | } 28 | } -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-turbine/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.RequestMapping; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hello") 20 | public String index(@RequestParam String name) { 21 | return name+",Hello World"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-turbine/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-turbine/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-dashboard-turbine 3 | 4 | server.port=9012 5 | 6 | 7 | ## 指定hystrixDashboard路径 8 | #management.endpoints.web.exposure.include=hystrix.stream 9 | #management.endpoints.web.base-path=/ 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://localhost:8004/eureka/ 13 | 14 | ## turbine配置 15 | turbine.appConfig=springcloud-hystrix-dashboard-consumer,springcloud-hystrix-dashboard-consumer2 16 | turbine.aggregator.clusterConfig= default 17 | turbine.clusterNameExpression= new String("default") 18 | turbine.instanceUrlSuffix: /hystrix.stream -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-turbine/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-turbine/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-hystrix-dashboard-turbine 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-turbine/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-dashboard-turbine/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Feb 15 11:40:26 CST 2019 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-hystrix-dashboard-turbine 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-hystrix-dashboard\\springcloud-hystrix-dashboard-turbine 7 | artifactId=springcloud-hystrix-dashboard-turbine 8 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/springcloud-hystrix-dashboard-turbine/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-dashboard-turbine 3 | 4 | server.port=9012 5 | 6 | 7 | ## 指定hystrixDashboard路径 8 | #management.endpoints.web.exposure.include=hystrix.stream 9 | #management.endpoints.web.base-path=/ 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://localhost:8004/eureka/ 13 | 14 | ## turbine配置 15 | turbine.appConfig=springcloud-hystrix-dashboard-consumer,springcloud-hystrix-dashboard-consumer2 16 | turbine.aggregator.clusterConfig= default 17 | turbine.clusterNameExpression= new String("default") 18 | turbine.instanceUrlSuffix: /hystrix.stream -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /springcloud-hystrix-dashboard/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix/README.md: -------------------------------------------------------------------------------- 1 | ## springcloud-hystrix 2 | 3 | ### 介绍 4 | 5 | > Netflix创建了一个名为Hystrix的库,它实现了断路器模式。主要的目的是为了解决服务雪崩效应的一个组件,是保护服务高可用的最后一道防线。 6 | 7 | 8 | ### 使用 9 | 10 | 11 | 依次运行 springcloud-eureka-hystrix、springcloud-hystrix-consumer和springcloud-hystrix-consumer2项目。启动成功之后,在浏览器输入 `http://localhost:8002/` 进行查看相关信息! 12 | 13 | 14 | **断路器测试** 15 | 16 | 启动成功之后在浏览器输入: 17 | > http://localhost:9004/hello/pancm 18 | 19 | 然后再输入: 20 | 21 | > http://localhost:9005/hello/pancm?name=pancm 22 | 23 | 查看是否正常! 24 | 然后再停止运行 springcloud-hystrix-consumer2项目! 25 | 26 | 在浏览器输入: 27 | > http://localhost:9004/hello/pancm 28 | 29 | 进行查看返回信息,最后在启动springcloud-hystrix-consumer2项目!然后再次在浏览器输入 `http://localhost:9004/hello/pancm ` 30 | ,查看信息。 31 | 32 | pancm,Hello World 33 | pancm,Hello World 34 | pancm, 请求另一个服务失败! 35 | pancm,Hello World 36 | 37 | 38 | 若出现以上结果,则表示断路器已成功生效! 39 | 40 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-eureka-hystrix/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-hystrix 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-hystrix-eureka 11 | springcloud-eureka-hystrix 12 | http://maven.apache.org 13 | 14 | UTF-8 15 | 16 | 17 | 18 | 19 | org.springframework.cloud 20 | spring-cloud-starter-netflix-eureka-server 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-eureka-hystrix/src/main/java/com/pancm/HystrixEurekaApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @EnableEurekaServer 18 | @SpringBootApplication 19 | public class HystrixEurekaApplication { 20 | public static void main(String[] args) { 21 | SpringApplication.run(HystrixEurekaApplication.class, args); 22 | System.out.println("hystrix注册中心服务启动..."); 23 | } 24 | } -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-eureka-hystrix/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-eureka-server 3 | 4 | server.port=8002 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-eureka-hystrix/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-eureka-hystrix/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-eureka-hystrix 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-eureka-hystrix/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-eureka/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Dec 21 09:58:50 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-hystrix-eureka 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-hystrix\\springcloud-eureka-hystrix 7 | artifactId=springcloud-hystrix-eureka 8 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-eureka-hystrix/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-eureka/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 1.0.0 7 | springcloud-hystrix 8 | 0.0.1-SNAPSHOT 9 | 10 | springcloud-hystrix-eureka 11 | springcloud-eureka-hystrix 12 | http://maven.apache.org 13 | 14 | UTF-8 15 | 16 | 17 | 18 | 19 | org.springframework.cloud 20 | spring-cloud-starter-netflix-eureka-server 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-eureka-hystrix/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8002 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/src/main/java/com/pancm/HystrixConsumerApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | import org.springframework.cloud.openfeign.EnableFeignClients; 7 | 8 | /** 9 | * 10 | * @Title: Application 11 | * @Description: 12 | * 程序入口 13 | * EnableDiscoveryClient: 启用服务注册与发现 14 | EnableFeignClients: 启用feign进行远程调用 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年3月29日 18 | */ 19 | @SpringBootApplication 20 | @EnableDiscoveryClient 21 | @EnableFeignClients 22 | public class HystrixConsumerApplication { 23 | public static void main(String[] args) { 24 | SpringApplication.run(HystrixConsumerApplication.class, args); 25 | System.out.println("hystrix第一个消费者服务启动..."); 26 | } 27 | } -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.web.bind.annotation.PathVariable; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | import com.pancm.remote.HelloRemote; 9 | 10 | 11 | 12 | 13 | 14 | /** 15 | * 16 | * @Title: ConsumerController 17 | * @Description: 18 | * 用于做转发请求 19 | * 通过服务注册中心转发到另一个服务区 20 | * 例如: 21 | * 将http://localhost:9004//hello/pancm 请求转发到 http://localhost:9005//hello?name=pancm 22 | * @Version:1.0.0 23 | * @author pancm 24 | * @date 2018年3月29日 25 | */ 26 | @RestController 27 | public class ConsumerController { 28 | 29 | @Autowired 30 | HelloRemote helloRemote; 31 | 32 | @RequestMapping("/hello/{name}") 33 | public String index(@PathVariable("name") String name) { 34 | System.out.println("接受到请求参数:"+name+",进行转发到其他服务"); 35 | return helloRemote.hello(name); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/src/main/java/com/pancm/remote/HelloRemote.java: -------------------------------------------------------------------------------- 1 | package com.pancm.remote; 2 | 3 | import org.springframework.cloud.openfeign.FeignClient; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RequestParam; 6 | 7 | 8 | /** 9 | * 10 | * @Title: HelloRemote 11 | * @Description: 12 | * Feign是一个声明式Web Service客户端。 13 | * 使用Feign能让编写Web Service客户端更加简单, 14 | * 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。 15 | * Feign也支持可拔插式的编码器和解码器。 16 | * Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。 17 | * Feign可以与Eureka和Ribbon组合使用以支持负载均衡。 18 | * 19 | * 20 | * @Version:1.0.0 21 | * @author pancm 22 | * @date 2018年3月29日 23 | */ 24 | @FeignClient(name= "springcloud-hystrix-consumer2",fallback = HelloRemoteHystrix.class)//服务熔断的时候返回fallback类中的内容 25 | public interface HelloRemote { 26 | @RequestMapping(value = "/hello") 27 | public String hello(@RequestParam(value = "name") String name); 28 | } 29 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/src/main/java/com/pancm/remote/HelloRemoteHystrix.java: -------------------------------------------------------------------------------- 1 | package com.pancm.remote; 2 | 3 | import org.springframework.stereotype.Component; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | 6 | /** 7 | * 8 | * @Title: HelloRemoteHystrix 9 | * @Description: 10 | * 熔断机制 11 | * 当服务生产者停止服务之后,调用 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @Component 17 | public class HelloRemoteHystrix implements HelloRemote{ 18 | 19 | @Override 20 | public String hello(@RequestParam(value = "name") String name) { 21 | return name+", 请求另一个服务失败!"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/src/main/java/com/pancm/remote/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | /** 5 | * @Title: package-info 6 | * @Description: 7 | * @Version:1.0.0 8 | * @author pancm 9 | * @date 2018年3月29日 10 | */ 11 | package com.pancm.remote; -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-consumer 3 | 4 | server.port = 9004 5 | 6 | ## 添加熔断机制 7 | feign.hystrix.enabled=true 8 | 9 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 10 | eureka.client.serviceUrl.defaultZone=http://localhost:8002/eureka/ 11 | 12 | 13 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-hystrix-consumer 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-consumer/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Dec 21 10:27:10 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-hystrix-consumer 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-hystrix\\springcloud-hystrix-consumer 7 | artifactId=springcloud-hystrix-consumer 8 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-consumer 3 | 4 | server.port = 9004 5 | 6 | ## 添加熔断机制 7 | feign.hystrix.enabled=true 8 | 9 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 10 | eureka.client.serviceUrl.defaultZone=http://localhost:8002/eureka/ 11 | 12 | 13 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer2/src/main/java/com/pancm/HystrixConsumerApplication2.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * 程序入口 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @SpringBootApplication 17 | @EnableDiscoveryClient 18 | public class HystrixConsumerApplication2 { 19 | public static void main(String[] args) { 20 | SpringApplication.run(HystrixConsumerApplication2.class, args); 21 | System.out.println("hystrix第二个消费者服务启动..."); 22 | } 23 | } -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer2/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.RequestMapping; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hello") 20 | public String index(@RequestParam String name) { 21 | return name+",Hello World"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer2/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-hystrix-consumer2 3 | 4 | server.port=9005 5 | 6 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8002/eureka/ 8 | 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer2/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer2/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-hystrix-consumer2 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer2/target/classes/META-INF/maven/1.0.0/springcloud-hystrix-consumer2/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Dec 21 10:21:31 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-hystrix-consumer2 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-hystrix\\springcloud-hystrix-consumer2 7 | artifactId=springcloud-hystrix-consumer2 8 | -------------------------------------------------------------------------------- /springcloud-hystrix/springcloud-hystrix-consumer2/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-consumer2 3 | 4 | server.port=9005 5 | 6 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8002/eureka/ 8 | 9 | 10 | -------------------------------------------------------------------------------- /springcloud-hystrix/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /springcloud-hystrix/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-ribbon/README.md: -------------------------------------------------------------------------------- 1 | ## springcloud-ribbon 2 | 3 | ### 介绍 4 | 5 | > Ribbon是一个客户端负载均衡器,它提供了对HTTP和TCP客户端的行为的大量控制。Feign已经使用了Ribbon,所以使用Feign,那么也可以使用这个功能。 6 | 7 | 8 | ### 使用 9 | 10 | 11 | 依次运行 springcloud-ribbon-eureka、springcloud-ribbon-consumer、springcloud-ribbon-consumer2和springcloud-ribbon-consumer3 这几个项目。启动成功之后,在浏览器输入 `http://localhost:8003/` 进行查看相关信息! 12 | 13 | 14 | **负载均衡测试** 15 | 16 | 启动成功之后在浏览器输入: 17 | > http://localhost:9006//hello 18 | 或 19 | > http://localhost:9006//hello/pancm 20 | 21 | 然后重复进行访问,若出现的结果交叉打印则表示已成功实现负载均衡功能。 22 | 23 | pancm,Hello World! 24 | pancm,Hello World! 这是另一个服务! 25 | pancm,Hello World! 26 | pancm,Hello World! 这是另一个服务! 27 | pancm,Hello World! 28 | pancm,Hello World! 这是另一个服务! 29 | 30 | 31 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/main/java/com/pancm/RibbonConsumerApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | import org.springframework.cloud.openfeign.EnableFeignClients; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * 程序入口 12 | * EnableDiscoveryClient: 启用服务注册与发现 13 | EnableFeignClients: 启用feign进行远程调用 14 | * @Version:1.0.0 15 | * @author pancm 16 | * @date 2018年3月29日 17 | */ 18 | @SpringBootApplication 19 | @EnableDiscoveryClient 20 | @EnableFeignClients 21 | public class Application { 22 | public static void main(String[] args) { 23 | SpringApplication.run(Application.class, args); 24 | System.out.println("第一个消费者服务启动..."); 25 | } 26 | } -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/main/java/com/pancm/config/RibbonConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.pancm.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | import com.netflix.loadbalancer.IRule; 7 | import com.netflix.loadbalancer.RandomRule; 8 | 9 | /** 10 | * @Title: RibbonConfiguration 11 | * @Description: 制定负载均衡策略 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2019年1月15日 15 | */ 16 | @Configuration 17 | public class RibbonConfiguration{ 18 | @Bean 19 | public IRule ribbonRule(){ 20 | //随机负载 21 | return new RandomRule(); 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/main/java/com/pancm/config/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2019年1月15日 7 | */ 8 | package com.pancm.config; -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.web.bind.annotation.PathVariable; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | import org.springframework.web.client.RestTemplate; 8 | 9 | import com.pancm.remote.HelloRemote; 10 | 11 | /** 12 | * 13 | * @Title: ConsumerController 14 | * @Description: 15 | * 用于做转发请求 16 | * @Version:1.0.0 17 | * @author pancm 18 | * @date 2018年3月29日 19 | */ 20 | @RestController 21 | public class ConsumerController { 22 | 23 | @Autowired 24 | RestTemplate restTemplate; 25 | 26 | @RequestMapping("/hello") 27 | public String hello() { 28 | //进行远程调用 29 | return restTemplate.getForObject("http://springcloud-ribbon-consumer2/hello/?name=xuwujing", String.class); 30 | } 31 | 32 | 33 | 34 | 35 | 36 | @Autowired 37 | HelloRemote helloRemote; 38 | 39 | @RequestMapping("/hello/{name}") 40 | public String index(@PathVariable("name") String name) { 41 | System.out.println("接受到请求参数:"+name+",进行转发到其他服务!"); 42 | return helloRemote.hello(name); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/main/java/com/pancm/remote/HelloRemote.java: -------------------------------------------------------------------------------- 1 | package com.pancm.remote; 2 | 3 | import org.springframework.cloud.openfeign.FeignClient; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RequestParam; 6 | 7 | 8 | /** 9 | * 10 | * @Title: HelloRemote 11 | * @Description: 12 | * Feign可以与Eureka和Ribbon组合使用以支持负载均衡。 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @FeignClient(name= "springcloud-ribbon-consumer2") //指定转发的服务名称,在application.properties中进行配置 18 | public interface HelloRemote { 19 | @RequestMapping(value = "/hello") 20 | public String hello(@RequestParam(value = "name") String name); 21 | } 22 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/main/java/com/pancm/remote/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.remote; -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-ribbon-consumer 3 | 4 | server.port=9006 5 | 6 | ## 禁用 eureka 7 | #ribbon.eureka.enabled: false 8 | 9 | ## 未在Eureka注册的服务实现负载均衡 10 | # springcloud-ribbon-consumer2.ribbon.listOfServers:localhost:9007,localhost:9008 11 | 12 | ## 指定随机策略 springcloud-ribbon-consumer2为指定的服务名称 13 | # springcloud-ribbon-consumer2.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule 14 | 15 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 16 | eureka.client.serviceUrl.defaultZone=http://localhost:8003/eureka/ 17 | 18 | 19 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-ribbon-consumer 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/target/classes/META-INF/maven/1.0.0/springcloud-ribbon-consumer/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Dec 21 11:15:21 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-ribbon-consumer 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-ribbon\\springcloud-ribbon-consumer 7 | artifactId=springcloud-ribbon-consumer 8 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-consumer 3 | 4 | server.port=9006 5 | 6 | 7 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 8 | eureka.client.serviceUrl.defaultZone=http://localhost:8003/eureka/ 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer2/src/main/java/com/pancm/RibbonConsumerApplication2.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | 6 | /** 7 | * 8 | * @Title: Application 9 | * @Description: 10 | * 程序入口 11 | * @Version:1.0.0 12 | * @author pancm 13 | * @date 2018年3月29日 14 | */ 15 | @SpringBootApplication 16 | @EnableDiscoveryClient 17 | public class RibbonConsumerApplication2 { 18 | public static void main(String[] args) { 19 | SpringApplication.run(RibbonConsumerApplication2.class, args); 20 | System.out.println("ribbon第二个消费者服务启动..."); 21 | } 22 | } -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer2/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.RequestMapping; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hello") 20 | public String index(@RequestParam String name) { 21 | return name+",Hello World!"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer2/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-ribbon-consumer2 3 | 4 | server.port=9007 5 | 6 | 7 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 8 | eureka.client.serviceUrl.defaultZone=http://localhost:8003/eureka/ 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer2/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer2/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-ribbon-consumer2 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer2/target/classes/META-INF/maven/1.0.0/springcloud-ribbon-consumer2/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Dec 21 11:40:40 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-ribbon-consumer2 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-ribbon\\springcloud-ribbon-consumer2 7 | artifactId=springcloud-ribbon-consumer2 8 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer2/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-consumer2 3 | 4 | server.port=9007 5 | 6 | 7 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 8 | eureka.client.serviceUrl.defaultZone=http://localhost:8003/eureka/ 9 | 10 | 11 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer3/src/main/java/com/pancm/RibbonConsumerApplication3.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | 6 | /** 7 | * 8 | * @Title: Application 9 | * @Description: 10 | * 程序入口 11 | * @Version:1.0.0 12 | * @author pancm 13 | * @date 2018年3月29日 14 | */ 15 | @SpringBootApplication 16 | @EnableDiscoveryClient 17 | public class RibbonConsumerApplication3 { 18 | public static void main(String[] args) { 19 | SpringApplication.run(RibbonConsumerApplication3.class, args); 20 | System.out.println("ribbon第三个消费者服务启动..."); 21 | } 22 | } -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer3/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.RequestMapping; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hello") 20 | public String index(@RequestParam String name) { 21 | return name+",Hello World! 这是另一个服务! "; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer3/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer3/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | ## 这个名称和另一个服务的名称保持一致才能实现负载均衡 2 | spring.application.name=springcloud-ribbon-consumer2 3 | 4 | server.port=9008 5 | 6 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8003/eureka/ 8 | 9 | 10 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer3/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer3/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-ribbon-consumer3 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer3/target/classes/META-INF/maven/1.0.0/springcloud-ribbon-consumer3/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Dec 21 11:40:55 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-ribbon-consumer3 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-ribbon\\springcloud-ribbon-consumer3 7 | artifactId=springcloud-ribbon-consumer3 8 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-consumer3/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | ## 这个名称和另一个服务的名称保持一致才能实现负载均衡 2 | spring.application.name=springcloud-consumer2 3 | 4 | server.port=9008 5 | 6 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 7 | eureka.client.serviceUrl.defaultZone=http://localhost:8003/eureka/ 8 | 9 | 10 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-eureka/src/main/java/com/pancm/RibbonEurekaApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年3月29日 16 | */ 17 | @EnableEurekaServer 18 | @SpringBootApplication 19 | public class Application { 20 | public static void main(String[] args) { 21 | SpringApplication.run(Application.class, args); 22 | System.out.println("注册中心服务启动..."); 23 | } 24 | } -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-eureka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8003 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-eureka/src/test/java/com/pancm/AppTest.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import junit.framework.Test; 4 | import junit.framework.TestCase; 5 | import junit.framework.TestSuite; 6 | 7 | /** 8 | * Unit test for simple App. 9 | */ 10 | public class AppTest 11 | extends TestCase 12 | { 13 | /** 14 | * Create the test case 15 | * 16 | * @param testName name of the test case 17 | */ 18 | public AppTest( String testName ) 19 | { 20 | super( testName ); 21 | } 22 | 23 | /** 24 | * @return the suite of tests being tested 25 | */ 26 | public static Test suite() 27 | { 28 | return new TestSuite( AppTest.class ); 29 | } 30 | 31 | /** 32 | * Rigourous Test :-) 33 | */ 34 | public void testApp() 35 | { 36 | assertTrue( true ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-eureka/target/classes/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Implementation-Title: springcloud-ribbon-eureka 3 | Implementation-Version: 0.0.1-SNAPSHOT 4 | Built-By: Administrator 5 | Implementation-Vendor-Id: 1.0.0 6 | Build-Jdk: 1.8.0_131 7 | Implementation-URL: http://maven.apache.org 8 | Created-By: Maven Integration for Eclipse 9 | 10 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-eureka/target/classes/META-INF/maven/1.0.0/springcloud-ribbon-eureka/pom.properties: -------------------------------------------------------------------------------- 1 | #Generated by Maven Integration for Eclipse 2 | #Fri Dec 21 11:19:05 CST 2018 3 | version=0.0.1-SNAPSHOT 4 | groupId=1.0.0 5 | m2e.projectName=springcloud-ribbon-eureka 6 | m2e.projectLocation=D\:\\git\\GitHub\\sc\\springcloud-study\\springcloud-ribbon\\springcloud-ribbon-eureka 7 | artifactId=springcloud-ribbon-eureka 8 | -------------------------------------------------------------------------------- /springcloud-ribbon/springcloud-ribbon-eureka/target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-eureka-server 3 | 4 | server.port=8003 5 | eureka.instance.hostname = localhost 6 | ## 表示是否将自己注册到Eureka Server,默认为true。 7 | eureka.client.register-with-eureka=false 8 | ## 表示是否从Eureka Server获取注册信息,默认为true。 9 | eureka.client.fetch-registry=false 10 | 11 | ## 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。 12 | eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ 13 | -------------------------------------------------------------------------------- /springcloud-ribbon/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-eureka/springclound-zuul-filter-eureka.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-eureka/src/main/java/com/pancm/ZuulEurekaApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年12月21日 16 | */ 17 | @EnableEurekaServer 18 | @SpringBootApplication 19 | public class ZuulEurekaApplication { 20 | public static void main(String[] args) { 21 | SpringApplication.run(ZuulEurekaApplication.class, args); 22 | System.out.println("zuul注册中心服务启动..."); 23 | } 24 | } -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-eureka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-zuul-filter-eureka 3 | server.port=8006 4 | eureka.client.register-with-eureka=false 5 | eureka.client.fetch-registry=false 6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/ -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-gateway/src/main/java/com/pancm/ZuulApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * 程序入口 12 | * EnableDiscoveryClient: 启用服务注册与发现 13 | EnableFeignClients: 启用feign进行远程调用 14 | EnableZuulProxy: 开启zuul的功能 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年3月29日 18 | */ 19 | @SpringBootApplication 20 | @EnableDiscoveryClient 21 | @EnableZuulProxy 22 | public class ZuulApplication { 23 | public static void main(String[] args) { 24 | SpringApplication.run(ZuulApplication.class, args); 25 | System.out.println("zuul 服务启动..."); 26 | } 27 | } -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-gateway/src/main/java/com/pancm/fallback/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @Since: jdk1.8 6 | * @author pancm 7 | * @date 2019年5月7日 8 | */ 9 | package com.pancm.fallback; -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-gateway/src/main/java/com/pancm/filter/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @Since: jdk1.8 6 | * @author pancm 7 | * @date 2019年5月7日 8 | */ 9 | package com.pancm.filter; -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-gateway/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-zuul-filter-gateway 2 | server.port = 9009 3 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 4 | 5 | zuul.SendErrorFilter.error.disable=true 6 | -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server1/springclound-zuul-filter-server1.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server1/src/main/java/com/pancm/ZuulServerApplication1.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | 6 | /** 7 | * 8 | * @Title: ZuulServerApplication1 9 | * @Description: 10 | * 程序入口 11 | * @Version:1.0.0 12 | * @author pancm 13 | * @date 2018年3月29日 14 | */ 15 | @SpringBootApplication 16 | @EnableDiscoveryClient 17 | public class ZuulServerApplication1 { 18 | public static void main(String[] args) { 19 | SpringApplication.run(ZuulServerApplication1.class, args); 20 | System.out.println("zuul 第一个服务启动..."); 21 | } 22 | } -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server1/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.PathVariable; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hello/{name}") 20 | public String index(@PathVariable String name) { 21 | return name+",Hello World!"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server1/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server1/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-zuul-filter-server1 2 | server.port=9010 3 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 4 | 5 | 6 | -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server2/src/main/java/pancm/ZuulServerApplication2.java: -------------------------------------------------------------------------------- 1 | package pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | 6 | /** 7 | * 8 | * @Title: ZuulServerApplication1 9 | * @Description: 10 | * 程序入口 11 | * @Version:1.0.0 12 | * @author pancm 13 | * @date 2018年3月29日 14 | */ 15 | @SpringBootApplication 16 | @EnableDiscoveryClient 17 | public class ZuulServerApplication2 { 18 | public static void main(String[] args) { 19 | SpringApplication.run(ZuulServerApplication2.class, args); 20 | System.out.println("zuul 第二个服务启动..."); 21 | } 22 | } -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server2/src/main/java/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.RequestMapping; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hi") 20 | public String index(@RequestParam String name) { 21 | return name+",hi!"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server2/src/main/java/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package pancm.controller; -------------------------------------------------------------------------------- /springcloud-zuul-filter/springcloud-zuul-filter-server2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-zuul-filter-server2 2 | server.port=9011 3 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /springcloud-zuul/README.md: -------------------------------------------------------------------------------- 1 | ## springcloud-zuul 2 | 3 | ### 介绍 4 | 5 | > Spring Cloud Zuul 主要的功能是提供负载均衡、反向代理、权限认证、动态路由,监控,弹性,安全等的边缘服务。 6 | > Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。 7 | 8 | 9 | ### 使用 10 | 11 | -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-eureka/src/main/java/com/pancm/ZuulEurekaApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * springcloud服务入口 12 | EnableEurekaServer 注解启动一个服务注册中心 13 | * @Version:1.0.0 14 | * @author pancm 15 | * @date 2018年12月21日 16 | */ 17 | @EnableEurekaServer 18 | @SpringBootApplication 19 | public class ZuulEurekaApplication { 20 | public static void main(String[] args) { 21 | SpringApplication.run(ZuulEurekaApplication.class, args); 22 | System.out.println("zuul注册中心服务启动..."); 23 | } 24 | } -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-eureka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-zuul-eureka 3 | server.port=8006 4 | eureka.client.register-with-eureka=false 5 | eureka.client.fetch-registry=false 6 | eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/ -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-gateway/src/main/java/com/pancm/ZuulApplication.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | import org.springframework.cloud.netflix.zuul.EnableZuulProxy; 6 | 7 | /** 8 | * 9 | * @Title: Application 10 | * @Description: 11 | * 程序入口 12 | * EnableDiscoveryClient: 启用服务注册与发现 13 | EnableFeignClients: 启用feign进行远程调用 14 | EnableZuulProxy: 开启zuul的功能 15 | * @Version:1.0.0 16 | * @author pancm 17 | * @date 2018年3月29日 18 | */ 19 | @SpringBootApplication 20 | @EnableDiscoveryClient 21 | @EnableZuulProxy 22 | public class ZuulApplication { 23 | public static void main(String[] args) { 24 | SpringApplication.run(ZuulApplication.class, args); 25 | System.out.println("zuul 服务启动..."); 26 | } 27 | } -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-gateway/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-zuul-gateway 2 | server.port = 9009 3 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 4 | 5 | 6 | zuul.routes.hello.path = /hello/** 7 | zuul.routes.hello.url = http://localhost:9010/hello 8 | zuul.routes.hi.path = /hi/** 9 | zuul.routes.hi.url = http://localhost:9011/hi 10 | -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-server1/src/main/java/com/pancm/ZuulServerApplication1.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | 6 | /** 7 | * 8 | * @Title: ZuulServerApplication1 9 | * @Description: 10 | * 程序入口 11 | * @Version:1.0.0 12 | * @author pancm 13 | * @date 2018年3月29日 14 | */ 15 | @SpringBootApplication 16 | @EnableDiscoveryClient 17 | public class ZuulServerApplication1 { 18 | public static void main(String[] args) { 19 | SpringApplication.run(ZuulServerApplication1.class, args); 20 | System.out.println("zuul 第一个服务启动..."); 21 | } 22 | } -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-server1/src/main/java/com/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package com.pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.PathVariable; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hello/{name}") 20 | public String index(@PathVariable String name) { 21 | return name+",Hello World!"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-server1/src/main/java/com/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package com.pancm.controller; -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-server1/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.application.name=springcloud-zuul-server1 3 | server.port=9010 4 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 5 | 6 | 7 | -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-server2/src/main/java/pancm/ZuulServerApplication2.java: -------------------------------------------------------------------------------- 1 | package pancm; 2 | import org.springframework.boot.SpringApplication; 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 5 | 6 | /** 7 | * 8 | * @Title: ZuulServerApplication1 9 | * @Description: 10 | * 程序入口 11 | * @Version:1.0.0 12 | * @author pancm 13 | * @date 2018年3月29日 14 | */ 15 | @SpringBootApplication 16 | @EnableDiscoveryClient 17 | public class ZuulServerApplication2 { 18 | public static void main(String[] args) { 19 | SpringApplication.run(ZuulServerApplication2.class, args); 20 | System.out.println("zuul 第二个服务启动..."); 21 | } 22 | } -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-server2/src/main/java/pancm/controller/ConsumerController.java: -------------------------------------------------------------------------------- 1 | package pancm.controller; 2 | 3 | import org.springframework.web.bind.annotation.RequestMapping; 4 | import org.springframework.web.bind.annotation.RequestParam; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | /** 8 | * 9 | * @Title: ConsumerController 10 | * @Description: 11 | * 用于做转发请求 12 | * @Version:1.0.0 13 | * @author pancm 14 | * @date 2018年3月29日 15 | */ 16 | @RestController 17 | public class ConsumerController { 18 | 19 | @RequestMapping("/hi") 20 | public String index(@RequestParam String name) { 21 | return name+",hi!"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-server2/src/main/java/pancm/controller/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * @Title: package-info 3 | * @Description: 4 | * @Version:1.0.0 5 | * @author pancm 6 | * @date 2018年12月20日 7 | */ 8 | package pancm.controller; -------------------------------------------------------------------------------- /springcloud-zuul/springcloud-zuul-server2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | spring.application.name=springcloud-zuul-server2 2 | server.port=9011 3 | eureka.client.serviceUrl.defaultZone=http://localhost:8006/eureka/ 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /springcloud-zuul/src/main/java/com/pancm/App.java: -------------------------------------------------------------------------------- 1 | package com.pancm; 2 | 3 | /** 4 | * Hello world! 5 | * 6 | */ 7 | public class App 8 | { 9 | public static void main( String[] args ) 10 | { 11 | System.out.println( "Hello World!" ); 12 | } 13 | } 14 | --------------------------------------------------------------------------------