DiscoveryController.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. package com.yihu.jw.controller;
  2. import com.netflix.appinfo.DataCenterInfo;
  3. import com.netflix.appinfo.EurekaInstanceConfig;
  4. import com.netflix.appinfo.InstanceInfo;
  5. import com.netflix.appinfo.LeaseInfo;
  6. import com.netflix.discovery.shared.Application;
  7. import com.netflix.eureka.EurekaServerContext;
  8. import com.netflix.eureka.cluster.PeerEurekaNode;
  9. import com.netflix.eureka.registry.PeerAwareInstanceRegistry;
  10. import net.sf.json.JSONArray;
  11. import net.sf.json.JSONObject;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.http.MediaType;
  14. import org.springframework.web.bind.annotation.*;
  15. import java.util.HashMap;
  16. /**
  17. * Created by chenweida on 2018/5/5 0005.
  18. */
  19. @RestController
  20. @RequestMapping(value = "/discovery", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  21. public class DiscoveryController {
  22. @Autowired
  23. private EurekaServerContext eurekaServerContext;
  24. /**
  25. * 获取发现服务的信息
  26. * @return
  27. */
  28. @GetMapping("eurukaMessage")
  29. public String eurukaMessage() {
  30. JSONObject jo = new JSONObject();
  31. jo.put("euruka服务器数", eurekaServerContext.getPeerEurekaNodes().getPeerEurekaNodes().size());
  32. EurekaInstanceConfig eurekaInstanceConfig = eurekaServerContext.getApplicationInfoManager().getEurekaInstanceConfig();
  33. jo.put("appGroupName", eurekaInstanceConfig.getAppGroupName());
  34. jo.put("getAppname", eurekaInstanceConfig.getAppname());
  35. jo.put("getASGName", eurekaInstanceConfig.getASGName());
  36. jo.put("DataCenterInfo-name", eurekaInstanceConfig.getDataCenterInfo().getName());
  37. jo.put("getDefaultAddressResolutionOrder", eurekaInstanceConfig.getDefaultAddressResolutionOrder());
  38. jo.put("getHealthCheckUrl", eurekaInstanceConfig.getHealthCheckUrl());
  39. jo.put("getHealthCheckUrlPath", eurekaInstanceConfig.getHealthCheckUrlPath());
  40. jo.put("getHomePageUrl", eurekaInstanceConfig.getHomePageUrl());
  41. jo.put("getHomePageUrlPath", eurekaInstanceConfig.getHomePageUrlPath());
  42. jo.put("getHostName", eurekaInstanceConfig.getHostName(true));
  43. jo.put("getInstanceId", eurekaInstanceConfig.getInstanceId());
  44. jo.put("getIpAddress", eurekaInstanceConfig.getIpAddress());
  45. jo.put("getLeaseExpirationDurationInSeconds", eurekaInstanceConfig.getLeaseExpirationDurationInSeconds());
  46. jo.put("getLeaseRenewalIntervalInSeconds", eurekaInstanceConfig.getLeaseRenewalIntervalInSeconds());
  47. jo.put("getMetadataMap", eurekaInstanceConfig.getMetadataMap());
  48. jo.put("getNamespace", eurekaInstanceConfig.getNamespace());
  49. jo.put("getNonSecurePort", eurekaInstanceConfig.getNonSecurePort());
  50. jo.put("getSecureHealthCheckUrl", eurekaInstanceConfig.getSecureHealthCheckUrl());
  51. jo.put("getSecurePort", eurekaInstanceConfig.getSecurePort());
  52. jo.put("getSecurePortEnabled", eurekaInstanceConfig.getSecurePortEnabled());
  53. jo.put("getSecureVirtualHostName", eurekaInstanceConfig.getSecureVirtualHostName());
  54. jo.put("getSecureHealthCheckUrl", eurekaInstanceConfig.getSecureHealthCheckUrl());
  55. JSONArray ja = new JSONArray();
  56. for (int i = 0; i < eurekaServerContext.getPeerEurekaNodes().getPeerNodesView().size(); i++) {
  57. PeerEurekaNode peerEurekaNode = eurekaServerContext.getPeerEurekaNodes().getPeerNodesView().get(i);
  58. JSONObject temp = new JSONObject();
  59. temp.put("服务器地址(serviceUrl)", peerEurekaNode.getServiceUrl());
  60. temp.put("batcherName", peerEurekaNode.getBatcherName());
  61. ja.add(temp);
  62. }
  63. jo.put("euruka服务器资料", ja);
  64. return jo.toString();
  65. }
  66. /**
  67. * 获取注册服务的信息
  68. * @return
  69. */
  70. @GetMapping("eurukaApplicationMessage")
  71. public String eurukaApplicationMessage() {
  72. PeerAwareInstanceRegistry peerAwareInstanceRegistry = eurekaServerContext.getRegistry();
  73. JSONObject jo = new JSONObject();
  74. jo.put("注册到发现服务的应用数目:", peerAwareInstanceRegistry.getApplications().size());
  75. JSONArray ja = new JSONArray();
  76. for (int i = 0; i < peerAwareInstanceRegistry.getApplications().getRegisteredApplications().size(); i++) {
  77. Application application = peerAwareInstanceRegistry.getApplications().getRegisteredApplications().get(i);
  78. JSONObject temp = new JSONObject();
  79. temp.put("名称", application.getName());
  80. ja.add(temp);
  81. }
  82. jo.put("服务列表",ja);
  83. return jo.toString();
  84. }
  85. /**
  86. * 注册服务
  87. * @param instanceId
  88. * @param appName
  89. * @param appGroupName
  90. * @param ipAddr
  91. * @param sid
  92. * @param port
  93. * @param securePort
  94. * @param homePageUrl
  95. * @param statusPageUrl
  96. * @param healthCheckUrl
  97. * @param secureHealthCheckUrl
  98. * @param vipAddress
  99. * @param secureVipAddress
  100. * @param countryId
  101. * @param dataCenterInfo
  102. * @param hostName
  103. * @param status
  104. * @param overriddenstatus
  105. * @param leaseInfo
  106. * @param isCoordinatingDiscoveryServer
  107. * @param metadata
  108. * @param lastUpdatedTimestamp
  109. * @param lastDirtyTimestamp
  110. * @param actionType
  111. * @param asgName
  112. * @return
  113. */
  114. @PostMapping("register")
  115. public String register(
  116. @RequestParam("instanceId") String instanceId,
  117. @RequestParam("app") String appName,
  118. @RequestParam("appGroupName") String appGroupName,
  119. @RequestParam("ipAddr") String ipAddr,
  120. @RequestParam("sid") String sid,
  121. @RequestParam("port") InstanceInfo.PortWrapper port,
  122. @RequestParam("securePort") InstanceInfo.PortWrapper securePort,
  123. @RequestParam("homePageUrl") String homePageUrl,
  124. @RequestParam("statusPageUrl") String statusPageUrl,
  125. @RequestParam("healthCheckUrl") String healthCheckUrl,
  126. @RequestParam("secureHealthCheckUrl") String secureHealthCheckUrl,
  127. @RequestParam("vipAddress") String vipAddress,
  128. @RequestParam("secureVipAddress") String secureVipAddress,
  129. @RequestParam("countryId") int countryId,
  130. @RequestParam("dataCenterInfo") DataCenterInfo dataCenterInfo,
  131. @RequestParam("hostName") String hostName,
  132. @RequestParam("status") InstanceInfo.InstanceStatus status,
  133. @RequestParam("overriddenstatus") InstanceInfo.InstanceStatus overriddenstatus,
  134. @RequestParam("leaseInfo") LeaseInfo leaseInfo,
  135. @RequestParam("isCoordinatingDiscoveryServer") Boolean isCoordinatingDiscoveryServer,
  136. @RequestParam("metadata") HashMap<String, String> metadata,
  137. @RequestParam("lastUpdatedTimestamp") Long lastUpdatedTimestamp,
  138. @RequestParam("lastDirtyTimestamp") Long lastDirtyTimestamp,
  139. @RequestParam("actionType") InstanceInfo.ActionType actionType,
  140. @RequestParam("asgName") String asgName
  141. ) {
  142. try {
  143. InstanceInfo info = new InstanceInfo(
  144. instanceId, appName, appGroupName, ipAddr,
  145. sid, port, securePort, homePageUrl,
  146. statusPageUrl, healthCheckUrl, secureHealthCheckUrl, vipAddress,
  147. secureVipAddress, countryId, dataCenterInfo, hostName,
  148. status, overriddenstatus, leaseInfo, isCoordinatingDiscoveryServer,
  149. metadata, lastUpdatedTimestamp, lastDirtyTimestamp, actionType, asgName);
  150. eurekaServerContext.getRegistry().register(info, true);
  151. return "注册成功";
  152. } catch (Exception e) {
  153. return "注册失败";
  154. }
  155. }
  156. /**
  157. * 取消注册
  158. * @param appName
  159. * @param id
  160. * @param isReplication
  161. * @return
  162. */
  163. @PostMapping("cancel")
  164. public String cancel(
  165. @RequestParam("appName") String appName,
  166. @RequestParam("id") String id,
  167. @RequestParam("isReplication") boolean isReplication
  168. ) {
  169. try {
  170. eurekaServerContext.getRegistry().cancel(appName, id, isReplication);
  171. return "取消成功";
  172. } catch (Exception e) {
  173. return "取消失败";
  174. }
  175. }
  176. }