Commit a3935596 by Nepxion

增加Mock接口

parent 552e45f2
...@@ -9,6 +9,7 @@ package com.nepxion.discovery.plugin.admincenter.configuration; ...@@ -9,6 +9,7 @@ package com.nepxion.discovery.plugin.admincenter.configuration;
* @version 1.0 * @version 1.0
*/ */
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -41,5 +42,11 @@ public class AdminAutoConfiguration { ...@@ -41,5 +42,11 @@ public class AdminAutoConfiguration {
public RestTemplate routerRestTemplate() { public RestTemplate routerRestTemplate() {
return new RestTemplate(); return new RestTemplate();
} }
@LoadBalanced
@Bean
public RestTemplate routerLoadBalancedRestTemplate() {
return new RestTemplate();
}
} }
} }
\ No newline at end of file
...@@ -47,6 +47,9 @@ public class RouterEndpoint { ...@@ -47,6 +47,9 @@ public class RouterEndpoint {
private RestTemplate routerRestTemplate; private RestTemplate routerRestTemplate;
@Autowired @Autowired
private RestTemplate routerLoadBalancedRestTemplate;
@Autowired
private DiscoveryClient discoveryClient; private DiscoveryClient discoveryClient;
@Autowired @Autowired
...@@ -88,6 +91,12 @@ public class RouterEndpoint { ...@@ -88,6 +91,12 @@ public class RouterEndpoint {
return routeTree(routeServiceIds); return routeTree(routeServiceIds);
} }
@RequestMapping(path = "/router/mock/{routeServiceId}", method = RequestMethod.POST)
@ApiOperation(value = "Mock调用", notes = "", response = String.class, httpMethod = "POST")
public String mock(@PathVariable(value = "routeServiceId") @ApiParam(value = "目标服务名", required = true) String routeServiceId, @RequestBody @ApiParam(value = "Mock入参", required = true) String mockValue) {
return routeMock(routeServiceId, mockValue);
}
public List<String> getServices() { public List<String> getServices() {
return discoveryClient.getServices(); return discoveryClient.getServices();
} }
...@@ -241,4 +250,14 @@ public class RouterEndpoint { ...@@ -241,4 +250,14 @@ public class RouterEndpoint {
return routerEntityList; return routerEntityList;
} }
private String routeMock(String routeServiceId, String mockValue) {
String result = pluginAdapter.mock(registration, mockValue);
if (!StringUtils.equals(routeServiceId, PluginConstant.MOCK_ROUTE_SERVICE_ID)) {
result = routerLoadBalancedRestTemplate.postForEntity("http://" + routeServiceId + "/router/mock/" + PluginConstant.MOCK_ROUTE_SERVICE_ID, result, String.class).getBody();
}
return result;
}
} }
\ No newline at end of file
...@@ -11,6 +11,7 @@ package com.nepxion.discovery.plugin.framework.adapter; ...@@ -11,6 +11,7 @@ package com.nepxion.discovery.plugin.framework.adapter;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.Registration;
import com.nepxion.discovery.plugin.framework.cache.PluginCache; import com.nepxion.discovery.plugin.framework.cache.PluginCache;
import com.nepxion.discovery.plugin.framework.cache.RuleCache; import com.nepxion.discovery.plugin.framework.cache.RuleCache;
...@@ -92,4 +93,14 @@ public abstract class AbstractPluginAdapter implements PluginAdapter { ...@@ -92,4 +93,14 @@ public abstract class AbstractPluginAdapter implements PluginAdapter {
public void clearDynamicRule() { public void clearDynamicRule() {
ruleCache.clear(PluginConstant.DYNAMIC_RULE); ruleCache.clear(PluginConstant.DYNAMIC_RULE);
} }
@Override
public String mock(Registration registration, String mockValue) {
String serviceId = getServiceId();
String version = getVersion();
String host = getHost(registration);
int port = getPort(registration);
return mockValue + " -> [" + serviceId + "][" + host + ":" + port + "][V" + version + "]";
}
} }
\ No newline at end of file
...@@ -48,4 +48,6 @@ public interface PluginAdapter { ...@@ -48,4 +48,6 @@ public interface PluginAdapter {
void setDynamicRule(RuleEntity ruleEntity); void setDynamicRule(RuleEntity ruleEntity);
void clearDynamicRule(); void clearDynamicRule();
String mock(Registration registration, String mockValue);
} }
\ No newline at end of file
...@@ -25,7 +25,8 @@ public class PluginConstant { ...@@ -25,7 +25,8 @@ public class PluginConstant {
public static final String RULE = "rule"; public static final String RULE = "rule";
public static final String DYNAMIC_RULE = "dynamicRule"; public static final String DYNAMIC_RULE = "dynamicRule";
public static final String REACH_MAX_LIMITED_COUNT = "reach max limited count"; public static final String REACH_MAX_LIMITED_COUNT = "reach max limited count";
public static final String MOCK_ROUTE_SERVICE_ID = "mockRouteServiceId";
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS"; public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
public static final String ENCODING_UTF_8 = "UTF-8"; public static final String ENCODING_UTF_8 = "UTF-8";
public static final String SEPARATE = ";"; public static final String SEPARATE = ";";
......
...@@ -10,10 +10,10 @@ package com.nepxion.discovery.plugin.example.feign; ...@@ -10,10 +10,10 @@ package com.nepxion.discovery.plugin.example.feign;
*/ */
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.serviceregistry.Registration;
import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.ConfigurableEnvironment;
import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter; import com.nepxion.discovery.plugin.framework.adapter.PluginAdapter;
import com.nepxion.discovery.plugin.framework.constant.PluginConstant;
public class AbstractFeignImpl { public class AbstractFeignImpl {
@Autowired @Autowired
...@@ -22,10 +22,10 @@ public class AbstractFeignImpl { ...@@ -22,10 +22,10 @@ public class AbstractFeignImpl {
@Autowired @Autowired
private PluginAdapter pluginAdapter; private PluginAdapter pluginAdapter;
public String doInvoke(String value) { @Autowired
String serviceId = environment.getProperty(PluginConstant.SPRING_APPLICATION_NAME); private Registration registration;
String version = pluginAdapter.getVersion();
return value + " -> " + serviceId + "[" + version + "]"; public String doInvoke(String value) {
return pluginAdapter.mock(registration, value);
} }
} }
\ No newline at end of file
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