use of org.apache.servicecomb.registry.api.registry.MicroserviceInstances in project java-chassis by ServiceComb.
the class TestMicroserviceInstances method setUp.
@Before
public void setUp() throws Exception {
microserviceInstances = new MicroserviceInstances();
findInstancesResponse = new FindInstancesResponse();
instances = new ArrayList<>();
instances.add(Mockito.mock(MicroserviceInstance.class));
}
use of org.apache.servicecomb.registry.api.registry.MicroserviceInstances in project incubator-servicecomb-java-chassis by apache.
the class ServiceRegistryClientImpl method findServiceInstances.
@Override
public MicroserviceInstances findServiceInstances(String consumerId, String appId, String serviceName, String versionRule, String revision) {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
IpPort ipPort = ipPortManager.getAvailableAddress();
CountDownLatch countDownLatch = new CountDownLatch(1);
RequestParam requestParam = new RequestParam().addQueryParam("appId", appId).addQueryParam("serviceName", serviceName).addQueryParam("global", "true").addQueryParam("version", versionRule);
if (RegistryUtils.getMicroservice().getEnvironment() != null) {
requestParam.addQueryParam("env", RegistryUtils.getMicroservice().getEnvironment());
}
if (consumerId != null) {
requestParam.addHeader("X-ConsumerId", consumerId);
}
if (revision != null) {
requestParam.addQueryParam("rev", revision);
}
restClientUtil.get(ipPort, Const.REGISTRY_API.MICROSERVICE_INSTANCES, requestParam, syncHandlerForInstances(countDownLatch, microserviceInstances));
try {
countDownLatch.await();
if (!microserviceInstances.isNeedRefresh()) {
return microserviceInstances;
}
if (microserviceInstances.getInstancesResponse() == null) {
// error
return null;
}
List<MicroserviceInstance> list = microserviceInstances.getInstancesResponse().getInstances();
if (list == null) {
microserviceInstances.getInstancesResponse().setInstances(new ArrayList<>());
}
return microserviceInstances;
} catch (Exception e) {
LOGGER.error("find microservice instance {}/{}/{} failed", appId, serviceName, versionRule, e);
}
return null;
}
use of org.apache.servicecomb.registry.api.registry.MicroserviceInstances in project incubator-servicecomb-java-chassis by apache.
the class LocalRegistryStore method findServiceInstances.
// local registry do not care about version and revision
public MicroserviceInstances findServiceInstances(String appId, String serviceName, String versionRule, String revision) {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
FindInstancesResponse findInstancesResponse = new FindInstancesResponse();
List<MicroserviceInstance> instances = new ArrayList<>();
Collectors.toList();
microserviceInstanceMap.values().forEach(allInstances -> allInstances.values().stream().filter(aInstance -> {
Microservice service = microserviceMap.get(aInstance.getServiceId());
return service.getAppId().equals(appId) && service.getServiceName().equals(serviceName);
}).forEach(item -> instances.add(item)));
if (instances.isEmpty()) {
microserviceInstances.setMicroserviceNotExist(true);
} else {
findInstancesResponse.setInstances(instances);
microserviceInstances.setMicroserviceNotExist(false);
microserviceInstances.setInstancesResponse(findInstancesResponse);
}
return microserviceInstances;
}
use of org.apache.servicecomb.registry.api.registry.MicroserviceInstances in project incubator-servicecomb-java-chassis by apache.
the class RegistryUtils method convertCacheToMicroserviceInstances.
/**
* for compatibility
*/
public static MicroserviceInstances convertCacheToMicroserviceInstances(MicroserviceCache microserviceCache) {
MicroserviceInstances microserviceInstances = new MicroserviceInstances();
switch(microserviceCache.getStatus()) {
case SERVICE_NOT_FOUND:
microserviceInstances.setMicroserviceNotExist(true);
microserviceInstances.setNeedRefresh(false);
microserviceInstances.setRevision("");
microserviceInstances.setInstancesResponse(null);
return microserviceInstances;
case NO_CHANGE:
microserviceInstances.setMicroserviceNotExist(false);
microserviceInstances.setNeedRefresh(false);
microserviceInstances.setRevision(microserviceCache.getRevisionId());
return microserviceInstances;
case REFRESHED:
microserviceInstances.setMicroserviceNotExist(false);
microserviceInstances.setNeedRefresh(true);
microserviceInstances.setRevision(microserviceCache.getRevisionId());
FindInstancesResponse findInstancesResponse = new FindInstancesResponse();
findInstancesResponse.setInstances(new ArrayList<>(microserviceCache.getInstances()));
microserviceInstances.setInstancesResponse(findInstancesResponse);
return microserviceInstances;
default:
return null;
}
}
use of org.apache.servicecomb.registry.api.registry.MicroserviceInstances in project incubator-servicecomb-java-chassis by apache.
the class MicroserviceVersions method pullInstances.
public void pullInstances() {
lastPullTime = System.currentTimeMillis();
MicroserviceInstances microserviceInstances = findServiceInstances();
lastPulledResult = microserviceInstances;
if (microserviceInstances == null) {
// will not do anything, consumers will use existing instances
return;
}
if (microserviceInstances.isMicroserviceNotExist()) {
// pulled failed, SC said target not exist
waitingDelete = true;
return;
}
if (null != revision && revision.equals(microserviceInstances.getRevision())) {
return;
}
pulledInstances = microserviceInstances.getInstancesResponse().getInstances();
pulledInstances.sort(Comparator.comparing(MicroserviceInstance::getInstanceId));
String rev = microserviceInstances.getRevision();
safeSetInstances(pulledInstances, rev);
}
Aggregations