Search in sources :

Example 1 with MicroServiceInstance

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;
}
Also used : MicroServiceInstance(com.huawei.registry.entity.MicroServiceInstance) RegisterCenterService(com.huawei.registry.services.RegisterCenterService)

Example 2 with MicroServiceInstance

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;
}
Also used : MicroServiceInstance(com.huawei.registry.entity.MicroServiceInstance) RegisterCenterService(com.huawei.registry.services.RegisterCenterService)

Aggregations

MicroServiceInstance (com.huawei.registry.entity.MicroServiceInstance)2 RegisterCenterService (com.huawei.registry.services.RegisterCenterService)2