Browse Source

0414 cloud loadbalancer+feign

Qing 1 year ago
parent
commit
d61cb0461b
70 changed files with 325 additions and 76 deletions
  1. 7 8
      springcloud-demo/.idea/encodings.xml
  2. 6 0
      springcloud-demo/.idea/misc.xml
  3. 110 44
      springcloud-demo/.idea/workspace.xml
  4. 0 0
      springcloud-demo/client/client-demo-1/.gitignore
  5. 0 0
      springcloud-demo/client/client-demo-1/.mvn/wrapper/maven-wrapper.jar
  6. 0 0
      springcloud-demo/client/client-demo-1/.mvn/wrapper/maven-wrapper.properties
  7. 0 0
      springcloud-demo/client/client-demo-1/mvnw
  8. 0 0
      springcloud-demo/client/client-demo-1/mvnw.cmd
  9. 0 0
      springcloud-demo/client/client-demo-1/pom.xml
  10. 0 0
      springcloud-demo/client/client-demo-1/src/main/java/com/sf/TestHashMap.java
  11. 0 0
      springcloud-demo/client/client-demo-1/src/main/java/com/sf/clientdemo1/ClientDemo1Application.java
  12. 0 0
      springcloud-demo/client/client-demo-1/src/main/java/com/sf/clientdemo1/controller/ClientController.java
  13. 0 0
      springcloud-demo/client/client-demo-1/src/main/resources/application.properties
  14. 0 0
      springcloud-demo/client/client-demo-1/src/test/java/com/sf/clientdemo1/ClientDemo1ApplicationTests.java
  15. 0 0
      springcloud-demo/client/client-demo-2/.gitignore
  16. 0 0
      springcloud-demo/client/client-demo-2/.mvn/wrapper/maven-wrapper.jar
  17. 0 0
      springcloud-demo/client/client-demo-2/.mvn/wrapper/maven-wrapper.properties
  18. 0 0
      springcloud-demo/client/client-demo-2/mvnw
  19. 0 0
      springcloud-demo/client/client-demo-2/mvnw.cmd
  20. 0 0
      springcloud-demo/client/client-demo-2/pom.xml
  21. 0 0
      springcloud-demo/client/client-demo-2/src/main/java/com/sf/clientdemo2/ClientDemo2Application.java
  22. 0 0
      springcloud-demo/client/client-demo-2/src/main/java/com/sf/clientdemo2/controller/ClientController.java
  23. 0 0
      springcloud-demo/client/client-demo-2/src/main/resources/application.properties
  24. 0 0
      springcloud-demo/client/client-demo-2/src/test/java/com/sf/clientdemo2/ClientDemo2ApplicationTests.java
  25. 0 0
      springcloud-demo/eureka-client-caller-demo/.gitignore
  26. 0 0
      springcloud-demo/eureka-client-caller-demo/.mvn/wrapper/maven-wrapper.jar
  27. 0 0
      springcloud-demo/eureka-client-caller-demo/.mvn/wrapper/maven-wrapper.properties
  28. 0 0
      springcloud-demo/eureka-client-caller-demo/mvnw
  29. 0 0
      springcloud-demo/eureka-client-caller-demo/mvnw.cmd
  30. 6 1
      springcloud-demo/eureka-client-caller-demo/pom.xml
  31. 21 0
      springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/EurekaClientCallerDemoApplication.java
  32. 32 0
      springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/config/LoadBalancerConfig.java
  33. 0 0
      springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/config/RestConfig.java
  34. 10 1
      springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/controller/ClientController.java
  35. 23 0
      springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/controller/FeignController.java
  36. 23 0
      springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/feign/MyFeignClient.java
  37. 57 0
      springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/mylb/ItxsRandomLoadBalancerClient.java
  38. 14 0
      springcloud-demo/eureka-client-caller-demo/src/main/resources/application.properties
  39. 0 0
      springcloud-demo/eureka-client-caller-demo/src/test/java/com/sf/eurekaclientdemo1/EurekaClientDemo1ApplicationTests.java
  40. 0 13
      springcloud-demo/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/EurekaClientDemo1Application.java
  41. 0 0
      springcloud-demo/eureka-client-supplier-demo/.gitignore
  42. 0 0
      springcloud-demo/eureka-client-supplier-demo/.mvn/wrapper/maven-wrapper.jar
  43. 0 0
      springcloud-demo/eureka-client-supplier-demo/.mvn/wrapper/maven-wrapper.properties
  44. 0 0
      springcloud-demo/eureka-client-supplier-demo/mvnw
  45. 0 0
      springcloud-demo/eureka-client-supplier-demo/mvnw.cmd
  46. 1 1
      springcloud-demo/eureka-client-supplier-demo/pom.xml
  47. 2 2
      springcloud-demo/eureka-client-supplier-demo/src/main/java/com/sf/eurekaclientdemo2/EurekaClientSupplierDemoApplication.java
  48. 2 0
      springcloud-demo/eureka-client-supplier-demo/src/main/java/com/sf/eurekaclientdemo2/controller/ClientController.java
  49. 5 3
      springcloud-demo/eureka-client-supplier-demo/src/main/resources/application-dev.properties
  50. 4 2
      springcloud-demo/eureka-client-supplier-demo/src/main/resources/application.properties
  51. 0 0
      springcloud-demo/eureka-client-supplier-demo/src/test/java/com/sf/eurekaclientdemo2/EurekaClientDemo2ApplicationTests.java
  52. 2 1
      springcloud-demo/eureka-service-demo/src/main/resources/application.properties
  53. 0 0
      springcloud-demo/service/eureka-service-demo-1/.gitignore
  54. 0 0
      springcloud-demo/service/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.jar
  55. 0 0
      springcloud-demo/service/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.properties
  56. 0 0
      springcloud-demo/service/eureka-service-demo-1/mvnw
  57. 0 0
      springcloud-demo/service/eureka-service-demo-1/mvnw.cmd
  58. 0 0
      springcloud-demo/service/eureka-service-demo-1/pom.xml
  59. 0 0
      springcloud-demo/service/eureka-service-demo-1/src/main/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1Application.java
  60. 0 0
      springcloud-demo/service/eureka-service-demo-1/src/main/resources/application.properties
  61. 0 0
      springcloud-demo/service/eureka-service-demo-1/src/test/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1ApplicationTests.java
  62. 0 0
      springcloud-demo/service/eureka-service-demo-2/.gitignore
  63. 0 0
      springcloud-demo/service/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.jar
  64. 0 0
      springcloud-demo/service/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.properties
  65. 0 0
      springcloud-demo/service/eureka-service-demo-2/mvnw
  66. 0 0
      springcloud-demo/service/eureka-service-demo-2/mvnw.cmd
  67. 0 0
      springcloud-demo/service/eureka-service-demo-2/pom.xml
  68. 0 0
      springcloud-demo/service/eureka-service-demo-2/src/main/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2Application.java
  69. 0 0
      springcloud-demo/service/eureka-service-demo-2/src/main/resources/application.properties
  70. 0 0
      springcloud-demo/service/eureka-service-demo-2/src/test/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2ApplicationTests.java

+ 7 - 8
springcloud-demo/.idea/encodings.xml

@@ -1,14 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="Encoding">
-    <file url="file://$PROJECT_DIR$/client-demo-1/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/client-demo-2/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/client-demo-3/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/eureka-client-demo-1/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/eureka-client-demo-2/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/eureka-service-demo-1/src/main/java" charset="UTF-8" />
-    <file url="file://$PROJECT_DIR$/eureka-service-demo-2/src/main/java" charset="UTF-8" />
+  <component name="Encoding" native2AsciiForPropertiesFiles="true" defaultCharsetForPropertiesFiles="UTF-8">
+    <file url="file://$PROJECT_DIR$/client/client-demo-1/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/client/client-demo-2/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/eureka-client-caller-demo/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/eureka-client-supplier-demo/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/eureka-service-demo/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/service/eureka-service-demo-1/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/service/eureka-service-demo-2/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
     <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
   </component>

+ 6 - 0
springcloud-demo/.idea/misc.xml

@@ -13,6 +13,12 @@
         <option value="$PROJECT_DIR$/eureka-client-demo-2/pom.xml" />
         <option value="$PROJECT_DIR$/eureka-service-demo-1/pom.xml" />
         <option value="$PROJECT_DIR$/eureka-service-demo-2/pom.xml" />
+        <option value="$PROJECT_DIR$/service/eureka-service-demo-1/pom.xml" />
+        <option value="$PROJECT_DIR$/client/client-demo-2/pom.xml" />
+        <option value="$PROJECT_DIR$/client/client-demo-1/pom.xml" />
+        <option value="$PROJECT_DIR$/service/eureka-service-demo-2/pom.xml" />
+        <option value="$PROJECT_DIR$/eureka-client-caller-demo/pom.xml" />
+        <option value="$PROJECT_DIR$/eureka-client-supplier-demo/pom.xml" />
       </list>
     </option>
     <option name="ignoredFiles">

+ 110 - 44
springcloud-demo/.idea/workspace.xml

@@ -7,6 +7,11 @@
     <list default="true" id="4074a161-1a6c-49f9-bbc5-f70fc0666d46" name="Changes" comment="0414 cloud eureka">
       <change afterPath="$PROJECT_DIR$/../.idea/VIPJAVA.iml" afterDir="false" />
       <change afterPath="$PROJECT_DIR$/../gn_oa_vip27/.idea/google-java-format.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/config/LoadBalancerConfig.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/controller/FeignController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/feign/MyFeignClient.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/mylb/ItxsRandomLoadBalancerClient.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/src/main/resources/application-dev.properties" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../02_JavaWeb/day06_mybatis/src/main/java/com/lc/mapper/UserMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/../02_JavaWeb/day06_mybatis/src/main/java/com/lc/mapper/UserMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../02_JavaWeb/day06_mybatis/src/main/resources/com/lc/mapper/UserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../02_JavaWeb/day06_mybatis/src/main/resources/com/lc/mapper/UserMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../02_JavaWeb/day07_mybatis/src/main/resources/com/lc/mapper/UserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../02_JavaWeb/day07_mybatis/src/main/resources/com/lc/mapper/UserMapper.xml" afterDir="false" />
@@ -19,8 +24,67 @@
       <change beforePath="$PROJECT_DIR$/.idea/encodings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/controller/ClientController.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/controller/ClientController.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/src/main/java/com/sf/eurekaclientdemo2/controller/ClientController.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-demo-2/src/main/java/com/sf/eurekaclientdemo2/controller/ClientController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/.gitignore" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/.mvn/wrapper/maven-wrapper.jar" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/.mvn/wrapper/maven-wrapper.jar" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/.mvn/wrapper/maven-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/.mvn/wrapper/maven-wrapper.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/mvnw" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/mvnw" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/mvnw.cmd" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/mvnw.cmd" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/src/main/java/com/sf/TestHashMap.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/src/main/java/com/sf/TestHashMap.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/src/main/java/com/sf/clientdemo1/ClientDemo1Application.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/src/main/java/com/sf/clientdemo1/ClientDemo1Application.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/src/main/java/com/sf/clientdemo1/controller/ClientController.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/src/main/java/com/sf/clientdemo1/controller/ClientController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/src/main/resources/application.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-1/src/test/java/com/sf/clientdemo1/ClientDemo1ApplicationTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-1/src/test/java/com/sf/clientdemo1/ClientDemo1ApplicationTests.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/.gitignore" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/.mvn/wrapper/maven-wrapper.jar" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/.mvn/wrapper/maven-wrapper.jar" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/.mvn/wrapper/maven-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/.mvn/wrapper/maven-wrapper.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/mvnw" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/mvnw" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/mvnw.cmd" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/mvnw.cmd" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/src/main/java/com/sf/clientdemo2/ClientDemo2Application.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/src/main/java/com/sf/clientdemo2/ClientDemo2Application.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/src/main/java/com/sf/clientdemo2/controller/ClientController.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/src/main/java/com/sf/clientdemo2/controller/ClientController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/src/main/resources/application.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/client-demo-2/src/test/java/com/sf/clientdemo2/ClientDemo2ApplicationTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/client/client-demo-2/src/test/java/com/sf/clientdemo2/ClientDemo2ApplicationTests.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/.gitignore" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/.mvn/wrapper/maven-wrapper.jar" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/.mvn/wrapper/maven-wrapper.jar" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/.mvn/wrapper/maven-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/.mvn/wrapper/maven-wrapper.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/mvnw" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/mvnw" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/mvnw.cmd" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/mvnw.cmd" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/EurekaClientDemo1Application.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/EurekaClientCallerDemoApplication.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/config/RestConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/config/RestConfig.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/controller/ClientController.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/controller/ClientController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/main/resources/application.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-1/src/test/java/com/sf/eurekaclientdemo1/EurekaClientDemo1ApplicationTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-caller-demo/src/test/java/com/sf/eurekaclientdemo1/EurekaClientDemo1ApplicationTests.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/.gitignore" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/.mvn/wrapper/maven-wrapper.jar" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/.mvn/wrapper/maven-wrapper.jar" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/.mvn/wrapper/maven-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/.mvn/wrapper/maven-wrapper.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/mvnw" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/mvnw" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/mvnw.cmd" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/mvnw.cmd" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/src/main/java/com/sf/eurekaclientdemo2/EurekaClientDemo2Application.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/src/main/java/com/sf/eurekaclientdemo2/EurekaClientSupplierDemoApplication.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/src/main/java/com/sf/eurekaclientdemo2/controller/ClientController.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/src/main/java/com/sf/eurekaclientdemo2/controller/ClientController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/src/main/resources/application.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-client-demo-2/src/test/java/com/sf/eurekaclientdemo2/EurekaClientDemo2ApplicationTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-client-supplier-demo/src/test/java/com/sf/eurekaclientdemo2/EurekaClientDemo2ApplicationTests.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/.gitignore" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.jar" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.jar" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/mvnw" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/mvnw" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/mvnw.cmd" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/mvnw.cmd" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/src/main/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1Application.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/src/main/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1Application.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/src/main/resources/application.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-1/src/test/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1ApplicationTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-1/src/test/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1ApplicationTests.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/.gitignore" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.jar" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.jar" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.properties" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/mvnw" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/mvnw" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/mvnw.cmd" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/mvnw.cmd" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/src/main/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2Application.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/src/main/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2Application.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/src/main/resources/application.properties" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo-2/src/test/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2ApplicationTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/service/eureka-service-demo-2/src/test/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2ApplicationTests.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/eureka-service-demo/src/main/resources/application.properties" beforeDir="false" afterPath="$PROJECT_DIR$/eureka-service-demo/src/main/resources/application.properties" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -35,6 +99,7 @@
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
+        <option value="Interface" />
         <option value="Class" />
       </list>
     </option>
@@ -71,17 +136,20 @@
     "SHARE_PROJECT_CONFIGURATION_FILES": "true",
     "Spring Boot.ClientDemo1Application.executor": "Run",
     "Spring Boot.ClientDemo2Application.executor": "Run",
+    "Spring Boot.EurekaClientCallerDemoApplication.executor": "Run",
     "Spring Boot.EurekaClientDemo1Application.executor": "Run",
     "Spring Boot.EurekaClientDemo2Application (1).executor": "Run",
     "Spring Boot.EurekaClientDemo2Application (2).executor": "Run",
     "Spring Boot.EurekaClientDemo2Application.executor": "Run",
+    "Spring Boot.EurekaClientSupplierDemoApplication(1).executor": "Run",
+    "Spring Boot.EurekaClientSupplierDemoApplication.executor": "Run",
     "Spring Boot.EurekaServiceDemo1Application.executor": "Run",
     "Spring Boot.EurekaServiceDemo2Application.executor": "Run",
     "Spring Boot.EurekaServiceDemoApplication.executor": "Run",
     "git-widget-placeholder": "master",
     "jdk.selected.JAVA_MODULE": "corretto-17",
     "kotlin-language-version-configured": "true",
-    "last_opened_file_path": "/Users/Qing/IdeaProjects/SiFu/VIPJAVA/springcloud-demo/eureka-client-demo-2/src/main/java/com/sf/eurekaclientdemo2",
+    "last_opened_file_path": "/Users/Qing/IdeaProjects/SiFu/VIPJAVA/springcloud-demo/eureka-client-supplier-demo/src/main/resources",
     "node.js.detected.package.eslint": "true",
     "node.js.detected.package.tslint": "true",
     "node.js.selected.package.eslint": "(autodetect)",
@@ -90,15 +158,20 @@
     "project.structure.last.edited": "Modules",
     "project.structure.proportion": "0.0",
     "project.structure.side.proportion": "0.0",
-    "settings.editor.selected.configurable": "MavenSettings",
+    "settings.editor.selected.configurable": "File.Encoding",
     "vue.rearranger.settings.migration": "true"
   }
 }]]></component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/eureka-client-supplier-demo/src/main/resources" />
       <recent name="$PROJECT_DIR$/eureka-client-demo-2/src/main/java/com/sf/eurekaclientdemo2" />
       <recent name="$PROJECT_DIR$/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1" />
     </key>
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/service" />
+      <recent name="$PROJECT_DIR$/client" />
+    </key>
     <key name="CopyClassDialog.RECENTS_KEY">
       <recent name="com.sf.clientdemo2" />
     </key>
@@ -124,52 +197,24 @@
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="ClientDemo1Application" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
-      <module name="client-demo-1" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.clientdemo1.ClientDemo1Application" />
+    <configuration name="EurekaClientCallerDemoApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
+      <module name="eureka-client-caller-demo" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.eurekaclientdemo1.EurekaClientCallerDemoApplication" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="ClientDemo2Application" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
-      <module name="client-demo-2" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.clientdemo2.ClientDemo2Application" />
+    <configuration name="EurekaClientSupplierDemoApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
+      <module name="eureka-client-supplier-demo" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.eurekaclientdemo2.EurekaClientSupplierDemoApplication" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
     </configuration>
-    <configuration name="EurekaClientDemo1Application" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
-      <module name="eureka-client-demo-1" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.eurekaclientdemo1.EurekaClientDemo1Application" />
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="EurekaClientDemo2Application (1)" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
-      <module name="eureka-client-demo-2" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.eurekaclientdemo2.EurekaClientDemo2Application" />
-      <option name="VM_PARAMETERS" value="-Dserver.port=18093" />
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="EurekaClientDemo2Application" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
-      <module name="eureka-client-demo-2" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.eurekaclientdemo2.EurekaClientDemo2Application" />
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="EurekaServiceDemo1Application" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
-      <module name="eureka-service-demo-1" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.eurekaservicedemo1.EurekaServiceDemo1Application" />
-      <method v="2">
-        <option name="Make" enabled="true" />
-      </method>
-    </configuration>
-    <configuration name="EurekaServiceDemo2Application" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
-      <module name="eureka-service-demo-2" />
-      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.eurekaservicedemo2.EurekaServiceDemo2Application" />
+    <configuration name="EurekaClientSupplierDemoApplication(1)" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot">
+      <option name="ACTIVE_PROFILES" value="dev" />
+      <module name="eureka-client-supplier-demo" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.sf.eurekaclientdemo2.EurekaClientSupplierDemoApplication" />
       <method v="2">
         <option name="Make" enabled="true" />
       </method>
@@ -196,7 +241,8 @@
       <option name="presentableId" value="Default" />
       <updated>1712747536992</updated>
       <workItem from="1712747538100" duration="4625000" />
-      <workItem from="1713064649248" duration="15859000" />
+      <workItem from="1713064649248" duration="15928000" />
+      <workItem from="1713347248141" duration="9643000" />
     </task>
     <task id="LOCAL-00001" summary="0410 cloud eureka">
       <option name="closed" value="true" />
@@ -214,7 +260,23 @@
       <option name="project" value="LOCAL" />
       <updated>1713082688554</updated>
     </task>
-    <option name="localTasksCounter" value="3" />
+    <task id="LOCAL-00003" summary="0414 cloud eureka">
+      <option name="closed" value="true" />
+      <created>1713085963891</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1713085963891</updated>
+    </task>
+    <task id="LOCAL-00004" summary="0414 cloud eureka">
+      <option name="closed" value="true" />
+      <created>1713085990397</created>
+      <option name="number" value="00004" />
+      <option name="presentableId" value="LOCAL-00004" />
+      <option name="project" value="LOCAL" />
+      <updated>1713085990397</updated>
+    </task>
+    <option name="localTasksCounter" value="5" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -261,4 +323,8 @@
     <MESSAGE value="0414 cloud eureka" />
     <option name="LAST_COMMIT_MESSAGE" value="0414 cloud eureka" />
   </component>
+  <component name="XSLT-Support.FileAssociations.UIState">
+    <expand />
+    <select />
+  </component>
 </project>

+ 0 - 0
springcloud-demo/client-demo-1/.gitignore → springcloud-demo/client/client-demo-1/.gitignore


+ 0 - 0
springcloud-demo/client-demo-1/.mvn/wrapper/maven-wrapper.jar → springcloud-demo/client/client-demo-1/.mvn/wrapper/maven-wrapper.jar


+ 0 - 0
springcloud-demo/client-demo-1/.mvn/wrapper/maven-wrapper.properties → springcloud-demo/client/client-demo-1/.mvn/wrapper/maven-wrapper.properties


+ 0 - 0
springcloud-demo/client-demo-1/mvnw → springcloud-demo/client/client-demo-1/mvnw


+ 0 - 0
springcloud-demo/client-demo-1/mvnw.cmd → springcloud-demo/client/client-demo-1/mvnw.cmd


+ 0 - 0
springcloud-demo/client-demo-1/pom.xml → springcloud-demo/client/client-demo-1/pom.xml


+ 0 - 0
springcloud-demo/client-demo-1/src/main/java/com/sf/TestHashMap.java → springcloud-demo/client/client-demo-1/src/main/java/com/sf/TestHashMap.java


+ 0 - 0
springcloud-demo/client-demo-1/src/main/java/com/sf/clientdemo1/ClientDemo1Application.java → springcloud-demo/client/client-demo-1/src/main/java/com/sf/clientdemo1/ClientDemo1Application.java


+ 0 - 0
springcloud-demo/client-demo-1/src/main/java/com/sf/clientdemo1/controller/ClientController.java → springcloud-demo/client/client-demo-1/src/main/java/com/sf/clientdemo1/controller/ClientController.java


+ 0 - 0
springcloud-demo/client-demo-1/src/main/resources/application.properties → springcloud-demo/client/client-demo-1/src/main/resources/application.properties


+ 0 - 0
springcloud-demo/client-demo-1/src/test/java/com/sf/clientdemo1/ClientDemo1ApplicationTests.java → springcloud-demo/client/client-demo-1/src/test/java/com/sf/clientdemo1/ClientDemo1ApplicationTests.java


+ 0 - 0
springcloud-demo/client-demo-2/.gitignore → springcloud-demo/client/client-demo-2/.gitignore


+ 0 - 0
springcloud-demo/client-demo-2/.mvn/wrapper/maven-wrapper.jar → springcloud-demo/client/client-demo-2/.mvn/wrapper/maven-wrapper.jar


+ 0 - 0
springcloud-demo/client-demo-2/.mvn/wrapper/maven-wrapper.properties → springcloud-demo/client/client-demo-2/.mvn/wrapper/maven-wrapper.properties


+ 0 - 0
springcloud-demo/client-demo-2/mvnw → springcloud-demo/client/client-demo-2/mvnw


+ 0 - 0
springcloud-demo/client-demo-2/mvnw.cmd → springcloud-demo/client/client-demo-2/mvnw.cmd


+ 0 - 0
springcloud-demo/client-demo-2/pom.xml → springcloud-demo/client/client-demo-2/pom.xml


+ 0 - 0
springcloud-demo/client-demo-2/src/main/java/com/sf/clientdemo2/ClientDemo2Application.java → springcloud-demo/client/client-demo-2/src/main/java/com/sf/clientdemo2/ClientDemo2Application.java


+ 0 - 0
springcloud-demo/client-demo-2/src/main/java/com/sf/clientdemo2/controller/ClientController.java → springcloud-demo/client/client-demo-2/src/main/java/com/sf/clientdemo2/controller/ClientController.java


+ 0 - 0
springcloud-demo/client-demo-2/src/main/resources/application.properties → springcloud-demo/client/client-demo-2/src/main/resources/application.properties


+ 0 - 0
springcloud-demo/client-demo-2/src/test/java/com/sf/clientdemo2/ClientDemo2ApplicationTests.java → springcloud-demo/client/client-demo-2/src/test/java/com/sf/clientdemo2/ClientDemo2ApplicationTests.java


+ 0 - 0
springcloud-demo/eureka-client-demo-1/.gitignore → springcloud-demo/eureka-client-caller-demo/.gitignore


+ 0 - 0
springcloud-demo/eureka-client-demo-1/.mvn/wrapper/maven-wrapper.jar → springcloud-demo/eureka-client-caller-demo/.mvn/wrapper/maven-wrapper.jar


+ 0 - 0
springcloud-demo/eureka-client-demo-1/.mvn/wrapper/maven-wrapper.properties → springcloud-demo/eureka-client-caller-demo/.mvn/wrapper/maven-wrapper.properties


+ 0 - 0
springcloud-demo/eureka-client-demo-1/mvnw → springcloud-demo/eureka-client-caller-demo/mvnw


+ 0 - 0
springcloud-demo/eureka-client-demo-1/mvnw.cmd → springcloud-demo/eureka-client-caller-demo/mvnw.cmd


+ 6 - 1
springcloud-demo/eureka-client-demo-1/pom.xml → springcloud-demo/eureka-client-caller-demo/pom.xml

@@ -9,7 +9,7 @@
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.sf</groupId>
-    <artifactId>eureka-client-demo-1</artifactId>
+    <artifactId>eureka-client-caller-demo</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>eureka-client-demo-1</name>
     <description>eureka-client-demo-1</description>
@@ -27,6 +27,11 @@
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>

+ 21 - 0
springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/EurekaClientCallerDemoApplication.java

@@ -0,0 +1,21 @@
+package com.sf.eurekaclientdemo1;
+
+import com.sf.eurekaclientdemo1.config.LoadBalancerConfig;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+/**
+ * 打开feign的使用开关
+ */
+@EnableFeignClients
+@LoadBalancerClients(defaultConfiguration = {LoadBalancerConfig.class})
+@SpringBootApplication
+public class EurekaClientCallerDemoApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(EurekaClientCallerDemoApplication.class, args);
+    }
+
+}

+ 32 - 0
springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/config/LoadBalancerConfig.java

@@ -0,0 +1,32 @@
+package com.sf.eurekaclientdemo1.config;
+
+import com.sf.eurekaclientdemo1.mylb.ItxsRandomLoadBalancerClient;
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
+import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+
+@Configuration
+public class LoadBalancerConfig {
+//
+//    @Bean
+//    public ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
+//                                                                   LoadBalancerClientFactory loadBalancerClientFactory) {
+//        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
+//        return new RandomLoadBalancer(
+//                loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),
+//                name);
+//    }
+
+    @Bean
+    public ReactorServiceInstanceLoadBalancer custonRandomLoadBalancer(
+            ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider){
+        return new ItxsRandomLoadBalancerClient(serviceInstanceListSupplierProvider);
+    }
+}

+ 0 - 0
springcloud-demo/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/config/RestConfig.java → springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/config/RestConfig.java


+ 10 - 1
springcloud-demo/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/controller/ClientController.java → springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/controller/ClientController.java

@@ -29,7 +29,7 @@ public class ClientController {
         // 要访问的 http://localhost:18092/clientDemo2
 //        String result = restTemplate.getForObject("http://localhost:18092/clientDemo2", String.class);
         // 通过服务名 完成服务调用
-        String result = restTemplate.getForObject("http://eureka-client-demo-2/clientDemo2", String.class);
+        String result = restTemplate.getForObject("http://eureka-client-supplier-demo/clientDemo2", String.class);
 
         // eureka-client-demo-2 localhost:18092
         // eureka-client-demo-2 localhost:18093
@@ -51,4 +51,13 @@ public class ClientController {
         return data + " " + result;
     }
 
+
+    @GetMapping("/clientDemo3")
+    public String handler3() throws Exception {
+        String result = restTemplate.getForObject("http://eureka-client-supplier-demo/clientDemo2", String.class);
+        return result;
+    }
+
+    // 代码有冗余
+
 }

+ 23 - 0
springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/controller/FeignController.java

@@ -0,0 +1,23 @@
+package com.sf.eurekaclientdemo1.controller;
+
+import com.sf.eurekaclientdemo1.feign.MyFeignClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class FeignController {
+
+    @Autowired
+    private MyFeignClient myFeignClient;
+
+    // 让调用远端的api 像调用方法一样简单
+    // http://localhost:18091/testFeign
+    //    ->  http://localhost:18092/clientDemo2
+    //    <-  result
+    @GetMapping("/testFeign")
+    public String testFeign(){
+        String result = myFeignClient.test();
+        return result;
+    }
+}

+ 23 - 0
springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/feign/MyFeignClient.java

@@ -0,0 +1,23 @@
+package com.sf.eurekaclientdemo1.feign;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+/**
+ * 可以将要调用的服务名配置在当前的接口中
+ * eureka-client-supplier-demo
+ * 再将要调用的接口名 配置在方法名之上
+ * @GetMapping("/clientDemo2")
+ *
+ * 将一个要调用的微服务的一个接口
+ * 分别抽象为微服务对应类
+ * 接口对应方法
+ */
+@FeignClient("eureka-client-supplier-demo")
+public interface MyFeignClient {
+
+    // http://eureka-client-supplier-demo/clientDemo2
+    @GetMapping("/clientDemo2")
+    String test();
+//    String clientDemo2();
+}

+ 57 - 0
springcloud-demo/eureka-client-caller-demo/src/main/java/com/sf/eurekaclientdemo1/mylb/ItxsRandomLoadBalancerClient.java

@@ -0,0 +1,57 @@
+package com.sf.eurekaclientdemo1.mylb;
+
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.loadbalancer.Request;
+import org.springframework.cloud.client.loadbalancer.Response;
+import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
+import reactor.core.publisher.Mono;
+
+import java.util.List;
+import java.util.Random;
+
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
+import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
+import org.springframework.cloud.client.loadbalancer.DefaultResponse;
+import org.springframework.cloud.client.loadbalancer.EmptyResponse;
+import org.springframework.cloud.client.loadbalancer.Request;
+import org.springframework.cloud.client.loadbalancer.Response;
+import reactor.core.publisher.Mono;
+
+public class ItxsRandomLoadBalancerClient implements ReactorServiceInstanceLoadBalancer {
+    // 服务列表
+    private ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider;
+
+    public ItxsRandomLoadBalancerClient(ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider) {
+        this.serviceInstanceListSupplierProvider = serviceInstanceListSupplierProvider;
+    }
+
+    @Override
+    public Mono<Response<ServiceInstance>> choose(Request request) {
+        ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider.getIfAvailable();
+        return supplier.get().next().map(this::getInstanceResponse);
+    }
+
+    /**
+     * 使用随机数获取服务
+     *
+     * @param instances
+     * @return
+     */
+    private Response<ServiceInstance> getInstanceResponse(
+            List<ServiceInstance> instances) {
+        System.out.println("ItxsRandomLoadBalancerClient start");
+        if (instances.isEmpty()) {
+            return new EmptyResponse();
+        }
+
+        // 随机算法
+        int size = instances.size();
+        Random random = new Random();
+        int anInt = random.nextInt(size);
+        ServiceInstance instance = instances.get(anInt);
+        System.out.println("ItxsRandomLoadBalancerClient random : " + anInt);
+        return new DefaultResponse(instance);
+    }
+}

+ 14 - 0
springcloud-demo/eureka-client-caller-demo/src/main/resources/application.properties

@@ -0,0 +1,14 @@
+spring.application.name=eureka-client-caller-demo
+server.port=18091
+#???Eureka???????
+eureka.client.fetch-registry=true
+#????
+#eureka.client.service-url.defaultZone=http://localhost:18081/eureka,http://localhost:18082/eureka
+eureka.client.service-url.defaultZone=http://localhost:18081/eureka
+
+# \u8BBE\u7F6Elb\u7684\u7F13\u5B58\u6709\u6548\u65F6\u95F4
+spring.cloud.loadbalancer.cache.ttl=10s
+# \u8BBE\u7F6Elb\u7684\u7F13\u5B58\u6709\u6548\u4E2A\u6570
+spring.cloud.loadbalancer.cache.capacity=1024
+# \u5173\u95ED\u7F13\u5B58
+spring.cloud.loadbalancer.cache.enabled=false

+ 0 - 0
springcloud-demo/eureka-client-demo-1/src/test/java/com/sf/eurekaclientdemo1/EurekaClientDemo1ApplicationTests.java → springcloud-demo/eureka-client-caller-demo/src/test/java/com/sf/eurekaclientdemo1/EurekaClientDemo1ApplicationTests.java


+ 0 - 13
springcloud-demo/eureka-client-demo-1/src/main/java/com/sf/eurekaclientdemo1/EurekaClientDemo1Application.java

@@ -1,13 +0,0 @@
-package com.sf.eurekaclientdemo1;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class EurekaClientDemo1Application {
-
-    public static void main(String[] args) {
-        SpringApplication.run(EurekaClientDemo1Application.class, args);
-    }
-
-}

+ 0 - 0
springcloud-demo/eureka-client-demo-2/.gitignore → springcloud-demo/eureka-client-supplier-demo/.gitignore


+ 0 - 0
springcloud-demo/eureka-client-demo-2/.mvn/wrapper/maven-wrapper.jar → springcloud-demo/eureka-client-supplier-demo/.mvn/wrapper/maven-wrapper.jar


+ 0 - 0
springcloud-demo/eureka-client-demo-2/.mvn/wrapper/maven-wrapper.properties → springcloud-demo/eureka-client-supplier-demo/.mvn/wrapper/maven-wrapper.properties


+ 0 - 0
springcloud-demo/eureka-client-demo-2/mvnw → springcloud-demo/eureka-client-supplier-demo/mvnw


+ 0 - 0
springcloud-demo/eureka-client-demo-2/mvnw.cmd → springcloud-demo/eureka-client-supplier-demo/mvnw.cmd


+ 1 - 1
springcloud-demo/eureka-client-demo-2/pom.xml → springcloud-demo/eureka-client-supplier-demo/pom.xml

@@ -9,7 +9,7 @@
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.sf</groupId>
-    <artifactId>eureka-client-demo-2</artifactId>
+    <artifactId>eureka-client-supplier-demo</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>eureka-client-demo-2</name>
     <description>eureka-client-demo-2</description>

+ 2 - 2
springcloud-demo/eureka-client-demo-2/src/main/java/com/sf/eurekaclientdemo2/EurekaClientDemo2Application.java → springcloud-demo/eureka-client-supplier-demo/src/main/java/com/sf/eurekaclientdemo2/EurekaClientSupplierDemoApplication.java

@@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
 @SpringBootApplication
-public class EurekaClientDemo2Application {
+public class EurekaClientSupplierDemoApplication {
 
     public static void main(String[] args) {
-        SpringApplication.run(EurekaClientDemo2Application.class, args);
+        SpringApplication.run(EurekaClientSupplierDemoApplication.class, args);
     }
 
 }

+ 2 - 0
springcloud-demo/eureka-client-demo-2/src/main/java/com/sf/eurekaclientdemo2/controller/ClientController.java → springcloud-demo/eureka-client-supplier-demo/src/main/java/com/sf/eurekaclientdemo2/controller/ClientController.java

@@ -6,6 +6,8 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 public class ClientController {
 
+    // http://eureka-client-supplier-demo/clientDemo2
+
     // http://localhost:18092/clientDemo2
     // http://localhost:18093/clientDemo2
     @GetMapping("/clientDemo2")

+ 5 - 3
springcloud-demo/eureka-client-demo-1/src/main/resources/application.properties → springcloud-demo/eureka-client-supplier-demo/src/main/resources/application-dev.properties

@@ -1,6 +1,8 @@
-spring.application.name=eureka-client-demo-1
-server.port=18091
+spring.application.name=eureka-client-supplier-demo
+server.port=18093
 #???Eureka???????
 eureka.client.fetch-registry=true
 #????
-eureka.client.service-url.defaultZone=http://localhost:18081/eureka,http://localhost:18082/eureka
+eureka.client.service-url.defaultZone=http://localhost:18081/eureka
+
+#spring.cloud.loadbalancer.configurations=5

+ 4 - 2
springcloud-demo/eureka-client-demo-2/src/main/resources/application.properties → springcloud-demo/eureka-client-supplier-demo/src/main/resources/application.properties

@@ -1,6 +1,8 @@
-spring.application.name=eureka-client-demo-2
+spring.application.name=eureka-client-supplier-demo
 server.port=18092
 #???Eureka???????
 eureka.client.fetch-registry=true
 #????
-eureka.client.service-url.defaultZone=http://localhost:18081/eureka
+eureka.client.service-url.defaultZone=http://localhost:18081/eureka
+
+#spring.cloud.loadbalancer.configurations=10

+ 0 - 0
springcloud-demo/eureka-client-demo-2/src/test/java/com/sf/eurekaclientdemo2/EurekaClientDemo2ApplicationTests.java → springcloud-demo/eureka-client-supplier-demo/src/test/java/com/sf/eurekaclientdemo2/EurekaClientDemo2ApplicationTests.java


+ 2 - 1
springcloud-demo/eureka-service-demo/src/main/resources/application.properties

@@ -7,4 +7,5 @@ eureka.client.register-with-eureka=true
 #???Eureka???????
 eureka.client.fetch-registry=true
 #????
-eureka.client.service-url.defaultZone=http://localhost:18082/eureka
+#eureka.client.service-url.defaultZone=http://localhost:18082/eureka
+eureka.client.service-url.defaultZone=http://localhost:18081/eureka

+ 0 - 0
springcloud-demo/eureka-service-demo-1/.gitignore → springcloud-demo/service/eureka-service-demo-1/.gitignore


+ 0 - 0
springcloud-demo/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.jar → springcloud-demo/service/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.jar


+ 0 - 0
springcloud-demo/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.properties → springcloud-demo/service/eureka-service-demo-1/.mvn/wrapper/maven-wrapper.properties


+ 0 - 0
springcloud-demo/eureka-service-demo-1/mvnw → springcloud-demo/service/eureka-service-demo-1/mvnw


+ 0 - 0
springcloud-demo/eureka-service-demo-1/mvnw.cmd → springcloud-demo/service/eureka-service-demo-1/mvnw.cmd


+ 0 - 0
springcloud-demo/eureka-service-demo-1/pom.xml → springcloud-demo/service/eureka-service-demo-1/pom.xml


+ 0 - 0
springcloud-demo/eureka-service-demo-1/src/main/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1Application.java → springcloud-demo/service/eureka-service-demo-1/src/main/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1Application.java


+ 0 - 0
springcloud-demo/eureka-service-demo-1/src/main/resources/application.properties → springcloud-demo/service/eureka-service-demo-1/src/main/resources/application.properties


+ 0 - 0
springcloud-demo/eureka-service-demo-1/src/test/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1ApplicationTests.java → springcloud-demo/service/eureka-service-demo-1/src/test/java/com/sf/eurekaservicedemo1/EurekaServiceDemo1ApplicationTests.java


+ 0 - 0
springcloud-demo/eureka-service-demo-2/.gitignore → springcloud-demo/service/eureka-service-demo-2/.gitignore


+ 0 - 0
springcloud-demo/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.jar → springcloud-demo/service/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.jar


+ 0 - 0
springcloud-demo/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.properties → springcloud-demo/service/eureka-service-demo-2/.mvn/wrapper/maven-wrapper.properties


+ 0 - 0
springcloud-demo/eureka-service-demo-2/mvnw → springcloud-demo/service/eureka-service-demo-2/mvnw


+ 0 - 0
springcloud-demo/eureka-service-demo-2/mvnw.cmd → springcloud-demo/service/eureka-service-demo-2/mvnw.cmd


+ 0 - 0
springcloud-demo/eureka-service-demo-2/pom.xml → springcloud-demo/service/eureka-service-demo-2/pom.xml


+ 0 - 0
springcloud-demo/eureka-service-demo-2/src/main/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2Application.java → springcloud-demo/service/eureka-service-demo-2/src/main/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2Application.java


+ 0 - 0
springcloud-demo/eureka-service-demo-2/src/main/resources/application.properties → springcloud-demo/service/eureka-service-demo-2/src/main/resources/application.properties


+ 0 - 0
springcloud-demo/eureka-service-demo-2/src/test/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2ApplicationTests.java → springcloud-demo/service/eureka-service-demo-2/src/test/java/com/sf/eurekaservicedemo2/EurekaServiceDemo2ApplicationTests.java