|
@ -0,0 +1,185 @@
|
|
|
package com.yihu.jw.controller;
|
|
|
|
|
|
import com.netflix.appinfo.DataCenterInfo;
|
|
|
import com.netflix.appinfo.EurekaInstanceConfig;
|
|
|
import com.netflix.appinfo.InstanceInfo;
|
|
|
import com.netflix.appinfo.LeaseInfo;
|
|
|
import com.netflix.discovery.shared.Application;
|
|
|
import com.netflix.eureka.EurekaServerContext;
|
|
|
import com.netflix.eureka.cluster.PeerEurekaNode;
|
|
|
import com.netflix.eureka.registry.PeerAwareInstanceRegistry;
|
|
|
import net.sf.json.JSONArray;
|
|
|
import net.sf.json.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.http.MediaType;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
|
/**
|
|
|
* Created by chenweida on 2018/5/5 0005.
|
|
|
*/
|
|
|
@RestController
|
|
|
@RequestMapping(value = "/discovery", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
|
|
|
public class DiscoveryController {
|
|
|
@Autowired
|
|
|
private EurekaServerContext eurekaServerContext;
|
|
|
|
|
|
/**
|
|
|
* 获取发现服务的信息
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("eurukaMessage")
|
|
|
public String eurukaMessage() {
|
|
|
|
|
|
JSONObject jo = new JSONObject();
|
|
|
jo.put("euruka服务器数", eurekaServerContext.getPeerEurekaNodes().getPeerEurekaNodes().size());
|
|
|
EurekaInstanceConfig eurekaInstanceConfig = eurekaServerContext.getApplicationInfoManager().getEurekaInstanceConfig();
|
|
|
jo.put("appGroupName", eurekaInstanceConfig.getAppGroupName());
|
|
|
jo.put("getAppname", eurekaInstanceConfig.getAppname());
|
|
|
jo.put("getASGName", eurekaInstanceConfig.getASGName());
|
|
|
jo.put("DataCenterInfo-name", eurekaInstanceConfig.getDataCenterInfo().getName());
|
|
|
jo.put("getDefaultAddressResolutionOrder", eurekaInstanceConfig.getDefaultAddressResolutionOrder());
|
|
|
jo.put("getHealthCheckUrl", eurekaInstanceConfig.getHealthCheckUrl());
|
|
|
jo.put("getHealthCheckUrlPath", eurekaInstanceConfig.getHealthCheckUrlPath());
|
|
|
jo.put("getHomePageUrl", eurekaInstanceConfig.getHomePageUrl());
|
|
|
jo.put("getHomePageUrlPath", eurekaInstanceConfig.getHomePageUrlPath());
|
|
|
jo.put("getHostName", eurekaInstanceConfig.getHostName(true));
|
|
|
jo.put("getInstanceId", eurekaInstanceConfig.getInstanceId());
|
|
|
jo.put("getIpAddress", eurekaInstanceConfig.getIpAddress());
|
|
|
jo.put("getLeaseExpirationDurationInSeconds", eurekaInstanceConfig.getLeaseExpirationDurationInSeconds());
|
|
|
jo.put("getLeaseRenewalIntervalInSeconds", eurekaInstanceConfig.getLeaseRenewalIntervalInSeconds());
|
|
|
jo.put("getMetadataMap", eurekaInstanceConfig.getMetadataMap());
|
|
|
jo.put("getNamespace", eurekaInstanceConfig.getNamespace());
|
|
|
jo.put("getNonSecurePort", eurekaInstanceConfig.getNonSecurePort());
|
|
|
jo.put("getSecureHealthCheckUrl", eurekaInstanceConfig.getSecureHealthCheckUrl());
|
|
|
jo.put("getSecurePort", eurekaInstanceConfig.getSecurePort());
|
|
|
jo.put("getSecurePortEnabled", eurekaInstanceConfig.getSecurePortEnabled());
|
|
|
jo.put("getSecureVirtualHostName", eurekaInstanceConfig.getSecureVirtualHostName());
|
|
|
jo.put("getSecureHealthCheckUrl", eurekaInstanceConfig.getSecureHealthCheckUrl());
|
|
|
|
|
|
JSONArray ja = new JSONArray();
|
|
|
for (int i = 0; i < eurekaServerContext.getPeerEurekaNodes().getPeerNodesView().size(); i++) {
|
|
|
PeerEurekaNode peerEurekaNode = eurekaServerContext.getPeerEurekaNodes().getPeerNodesView().get(i);
|
|
|
JSONObject temp = new JSONObject();
|
|
|
temp.put("服务器地址(serviceUrl)", peerEurekaNode.getServiceUrl());
|
|
|
temp.put("batcherName", peerEurekaNode.getBatcherName());
|
|
|
ja.add(temp);
|
|
|
}
|
|
|
jo.put("euruka服务器资料", ja);
|
|
|
return jo.toString();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取注册服务的信息
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("eurukaApplicationMessage")
|
|
|
public String eurukaApplicationMessage() {
|
|
|
PeerAwareInstanceRegistry peerAwareInstanceRegistry = eurekaServerContext.getRegistry();
|
|
|
JSONObject jo = new JSONObject();
|
|
|
jo.put("注册到发现服务的应用数目:", peerAwareInstanceRegistry.getApplications().size());
|
|
|
JSONArray ja = new JSONArray();
|
|
|
for (int i = 0; i < peerAwareInstanceRegistry.getApplications().getRegisteredApplications().size(); i++) {
|
|
|
Application application = peerAwareInstanceRegistry.getApplications().getRegisteredApplications().get(i);
|
|
|
JSONObject temp = new JSONObject();
|
|
|
temp.put("名称", application.getName());
|
|
|
ja.add(temp);
|
|
|
}
|
|
|
jo.put("服务列表",ja);
|
|
|
return jo.toString();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 注册服务
|
|
|
* @param instanceId
|
|
|
* @param appName
|
|
|
* @param appGroupName
|
|
|
* @param ipAddr
|
|
|
* @param sid
|
|
|
* @param port
|
|
|
* @param securePort
|
|
|
* @param homePageUrl
|
|
|
* @param statusPageUrl
|
|
|
* @param healthCheckUrl
|
|
|
* @param secureHealthCheckUrl
|
|
|
* @param vipAddress
|
|
|
* @param secureVipAddress
|
|
|
* @param countryId
|
|
|
* @param dataCenterInfo
|
|
|
* @param hostName
|
|
|
* @param status
|
|
|
* @param overriddenstatus
|
|
|
* @param leaseInfo
|
|
|
* @param isCoordinatingDiscoveryServer
|
|
|
* @param metadata
|
|
|
* @param lastUpdatedTimestamp
|
|
|
* @param lastDirtyTimestamp
|
|
|
* @param actionType
|
|
|
* @param asgName
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("register")
|
|
|
public String register(
|
|
|
@RequestParam("instanceId") String instanceId,
|
|
|
@RequestParam("app") String appName,
|
|
|
@RequestParam("appGroupName") String appGroupName,
|
|
|
@RequestParam("ipAddr") String ipAddr,
|
|
|
@RequestParam("sid") String sid,
|
|
|
@RequestParam("port") InstanceInfo.PortWrapper port,
|
|
|
@RequestParam("securePort") InstanceInfo.PortWrapper securePort,
|
|
|
@RequestParam("homePageUrl") String homePageUrl,
|
|
|
@RequestParam("statusPageUrl") String statusPageUrl,
|
|
|
@RequestParam("healthCheckUrl") String healthCheckUrl,
|
|
|
@RequestParam("secureHealthCheckUrl") String secureHealthCheckUrl,
|
|
|
@RequestParam("vipAddress") String vipAddress,
|
|
|
@RequestParam("secureVipAddress") String secureVipAddress,
|
|
|
@RequestParam("countryId") int countryId,
|
|
|
@RequestParam("dataCenterInfo") DataCenterInfo dataCenterInfo,
|
|
|
@RequestParam("hostName") String hostName,
|
|
|
@RequestParam("status") InstanceInfo.InstanceStatus status,
|
|
|
@RequestParam("overriddenstatus") InstanceInfo.InstanceStatus overriddenstatus,
|
|
|
@RequestParam("leaseInfo") LeaseInfo leaseInfo,
|
|
|
@RequestParam("isCoordinatingDiscoveryServer") Boolean isCoordinatingDiscoveryServer,
|
|
|
@RequestParam("metadata") HashMap<String, String> metadata,
|
|
|
@RequestParam("lastUpdatedTimestamp") Long lastUpdatedTimestamp,
|
|
|
@RequestParam("lastDirtyTimestamp") Long lastDirtyTimestamp,
|
|
|
@RequestParam("actionType") InstanceInfo.ActionType actionType,
|
|
|
@RequestParam("asgName") String asgName
|
|
|
) {
|
|
|
try {
|
|
|
InstanceInfo info = new InstanceInfo(
|
|
|
instanceId, appName, appGroupName, ipAddr,
|
|
|
sid, port, securePort, homePageUrl,
|
|
|
statusPageUrl, healthCheckUrl, secureHealthCheckUrl, vipAddress,
|
|
|
secureVipAddress, countryId, dataCenterInfo, hostName,
|
|
|
status, overriddenstatus, leaseInfo, isCoordinatingDiscoveryServer,
|
|
|
metadata, lastUpdatedTimestamp, lastDirtyTimestamp, actionType, asgName);
|
|
|
eurekaServerContext.getRegistry().register(info, true);
|
|
|
return "注册成功";
|
|
|
} catch (Exception e) {
|
|
|
return "注册失败";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 取消注册
|
|
|
* @param appName
|
|
|
* @param id
|
|
|
* @param isReplication
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("cancel")
|
|
|
public String cancel(
|
|
|
@RequestParam("appName") String appName,
|
|
|
@RequestParam("id") String id,
|
|
|
@RequestParam("isReplication") boolean isReplication
|
|
|
) {
|
|
|
try {
|
|
|
eurekaServerContext.getRegistry().cancel(appName, id, isReplication);
|
|
|
return "取消成功";
|
|
|
} catch (Exception e) {
|
|
|
return "取消失败";
|
|
|
}
|
|
|
}
|
|
|
}
|