use of com.huawei.registry.entity.MicroServiceInstance in project Sermant by huaweicloud.
the class DiscoveryClientInterceptor method doBefore.
@Override
public ExecuteContext doBefore(ExecuteContext context) {
if (isMarked()) {
return context;
}
try {
mark();
String serviceId = (String) context.getArguments()[0];
final RegisterCenterService service = ServiceManager.getService(RegisterCenterService.class);
final List<MicroServiceInstance> microServiceInstances = service.getServerList(serviceId);
if (!microServiceInstances.isEmpty()) {
context.skip(convertAndMerge(microServiceInstances, serviceId));
}
} finally {
unMark();
}
return context;
}
use of com.huawei.registry.entity.MicroServiceInstance in project Sermant by huaweicloud.
the class ServerListInterceptor method doBefore.
@Override
public ExecuteContext doBefore(ExecuteContext context) {
// ServerList存在层层调用场景,此处使用外部共享线程变量保证仅在其最外层ServerList实现拦截
if (MarkUtils.isMarked()) {
// 此处针对当前线程, 如果是拦截器内部调用直接pass
return context;
}
MarkUtils.mark();
try {
Optional<String> serviceIdOption = getServiceName(context);
if (!serviceIdOption.isPresent()) {
return context;
}
final RegisterCenterService service = ServiceManager.getService(RegisterCenterService.class);
String serviceName = serviceIdOption.get();
final List<MicroServiceInstance> serverList = service.getServerList(serviceName);
if (!serverList.isEmpty()) {
// 单注册中心场景无需合并
context.skip(convertAndMerge(context.getObject(), serverList, serviceName));
}
} finally {
MarkUtils.unMark();
}
return context;
}
Aggregations