Search in sources :

Example 1 with RegisterCenterService

use of com.huawei.register.services.RegisterCenterService in project Sermant by huaweicloud.

the class RegistrationInterceptor method doBefore.

@Override
public ExecuteContext doBefore(ExecuteContext context) {
    if (!(context.getArguments()[0] instanceof Registration)) {
        return context;
    }
    fillClientInfo((Registration) context.getArguments()[0]);
    final RegisterCenterService service = ServiceManager.getService(RegisterCenterService.class);
    final FixedResult fixedResult = new FixedResult();
    service.register(fixedResult);
    if (fixedResult.isSkip()) {
        context.skip(fixedResult.getResult());
    }
    return context;
}
Also used : FixedResult(com.huawei.register.entity.FixedResult) Registration(org.springframework.cloud.client.serviceregistry.Registration) RegisterCenterService(com.huawei.register.services.RegisterCenterService)

Example 2 with RegisterCenterService

use of com.huawei.register.services.RegisterCenterService 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.register.entity.MicroServiceInstance) RegisterCenterService(com.huawei.register.services.RegisterCenterService)

Example 3 with RegisterCenterService

use of com.huawei.register.services.RegisterCenterService in project Sermant by huaweicloud.

the class ServerListInterceptor method doBefore.

@Override
public ExecuteContext doBefore(ExecuteContext context) {
    if (isMarked()) {
        // 此处针对当前线程, 如果是拦截器内部调用直接pass
        return context;
    }
    try {
        mark();
        final RegisterCenterService service = ServiceManager.getService(RegisterCenterService.class);
        final List<MicroServiceInstance> serverList = service.getServerList(context.getObject());
        if (!serverList.isEmpty()) {
            // 单注册中心场景无需合并
            context.skip(convertAndMerge(context.getObject(), serverList));
        }
    } finally {
        unMark();
    }
    return context;
}
Also used : MicroServiceInstance(com.huawei.register.entity.MicroServiceInstance) RegisterCenterService(com.huawei.register.services.RegisterCenterService)

Aggregations

RegisterCenterService (com.huawei.register.services.RegisterCenterService)3 MicroServiceInstance (com.huawei.register.entity.MicroServiceInstance)2 FixedResult (com.huawei.register.entity.FixedResult)1 Registration (org.springframework.cloud.client.serviceregistry.Registration)1