Commit 71128118 by Jason Song

add appId and ip address when querying from meta server

parent b9ff6841
package com.ctrip.apollo.internals; package com.ctrip.apollo.internals;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.escape.Escaper;
import com.google.common.net.UrlEscapers;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.ctrip.apollo.core.dto.ServiceDTO; import com.ctrip.apollo.core.dto.ServiceDTO;
...@@ -19,9 +23,11 @@ import org.slf4j.Logger; ...@@ -19,9 +23,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.unidal.lookup.annotation.Inject; import org.unidal.lookup.annotation.Inject;
import org.unidal.lookup.annotation.Named; import org.unidal.lookup.annotation.Named;
import org.unidal.net.Networks;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -37,6 +43,7 @@ public class ConfigServiceLocator implements Initializable { ...@@ -37,6 +43,7 @@ public class ConfigServiceLocator implements Initializable {
private AtomicReference<List<ServiceDTO>> m_configServices; private AtomicReference<List<ServiceDTO>> m_configServices;
private Type m_responseType; private Type m_responseType;
private ScheduledExecutorService m_executorService; private ScheduledExecutorService m_executorService;
private static final Joiner.MapJoiner MAP_JOINER = Joiner.on("&").withKeyValueSeparator("=");
/** /**
* Create a config service locator. * Create a config service locator.
...@@ -96,8 +103,7 @@ public class ConfigServiceLocator implements Initializable { ...@@ -96,8 +103,7 @@ public class ConfigServiceLocator implements Initializable {
} }
private synchronized void updateConfigServices() { private synchronized void updateConfigServices() {
String domainName = m_configUtil.getMetaServerDomainName(); String url = assembleMetaServiceUrl();
String url = domainName + "/services/config";
HttpRequest request = new HttpRequest(url); HttpRequest request = new HttpRequest(url);
int maxRetries = 5; int maxRetries = 5;
...@@ -130,6 +136,19 @@ public class ConfigServiceLocator implements Initializable { ...@@ -130,6 +136,19 @@ public class ConfigServiceLocator implements Initializable {
throw new RuntimeException("Get config services failed", exception); throw new RuntimeException("Get config services failed", exception);
} }
private String assembleMetaServiceUrl() {
String domainName = m_configUtil.getMetaServerDomainName();
String appId = m_configUtil.getAppId();
String localIp = Networks.forIp().getLocalHostAddress();
Escaper escaper = UrlEscapers.urlPathSegmentEscaper();
Map<String, String> queryParams = Maps.newHashMap();
queryParams.put("appId", escaper.escape(appId));
queryParams.put("ip", escaper.escape(localIp));
return domainName + "/services/config?" + MAP_JOINER.join(queryParams);
}
private void logConfigServicesToCat(List<ServiceDTO> serviceDtos) { private void logConfigServicesToCat(List<ServiceDTO> serviceDtos) {
for (ServiceDTO serviceDto : serviceDtos) { for (ServiceDTO serviceDto : serviceDtos) {
Cat.logEvent("Apollo.Config.Services", serviceDto.getHomepageUrl()); Cat.logEvent("Apollo.Config.Services", serviceDto.getHomepageUrl());
......
...@@ -6,6 +6,7 @@ import com.netflix.appinfo.InstanceInfo; ...@@ -6,6 +6,7 @@ import com.netflix.appinfo.InstanceInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
...@@ -39,7 +40,9 @@ public class ServiceController { ...@@ -39,7 +40,9 @@ public class ServiceController {
} }
@RequestMapping("/config") @RequestMapping("/config")
public List<ServiceDTO> getConfigService() { public List<ServiceDTO> getConfigService(
@RequestParam(value = "appId", defaultValue = "") String appId,
@RequestParam(value = "ip", defaultValue = "") String clientIp) {
List<InstanceInfo> instances = discoveryService.getConfigServiceInstances(); List<InstanceInfo> instances = discoveryService.getConfigServiceInstances();
List<ServiceDTO> result = instances.stream().map(new Function<InstanceInfo, ServiceDTO>() { List<ServiceDTO> result = instances.stream().map(new Function<InstanceInfo, ServiceDTO>() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment