Search in sources :

Example 6 with MicroserviceInstance

use of io.servicecomb.serviceregistry.api.registry.MicroserviceInstance in project java-chassis by ServiceComb.

the class CseDiscoveryClient method getInstances.

@Override
public List<ServiceInstance> getInstances(final String serviceId) {
    List<ServiceInstance> instances = new ArrayList<ServiceInstance>();
    ServiceRegistryClient client = RegistryClientFactory.getRegistryClient();
    String appId = DynamicPropertyFactory.getInstance().getStringProperty("APPLICATION_ID", "default").get();
    ReferenceConfig referenceConfig = consumerProviderManager.getReferenceConfig(serviceId);
    String versionRule = referenceConfig.getMicroserviceVersionRule();
    String cseServiceID = client.getMicroserviceId(appId, serviceId, versionRule);
    List<MicroserviceInstance> cseServices = client.getMicroserviceInstance(cseServiceID, cseServiceID);
    if (null != cseServices && !cseServices.isEmpty()) {
        for (MicroserviceInstance instance : cseServices) {
            List<String> eps = instance.getEndpoints();
            for (String ep : eps) {
                URIEndpointObject uri = new URIEndpointObject(ep);
                instances.add(new DefaultServiceInstance(instance.getServiceId(), uri.getHostOrIp(), uri.getPort(), false));
            }
        }
    }
    return instances;
}
Also used : DefaultServiceInstance(org.springframework.cloud.client.DefaultServiceInstance) ArrayList(java.util.ArrayList) DefaultServiceInstance(org.springframework.cloud.client.DefaultServiceInstance) ServiceInstance(org.springframework.cloud.client.ServiceInstance) MicroserviceInstance(io.servicecomb.serviceregistry.api.registry.MicroserviceInstance) ServiceRegistryClient(io.servicecomb.serviceregistry.client.ServiceRegistryClient) URIEndpointObject(io.servicecomb.foundation.common.net.URIEndpointObject)

Example 7 with MicroserviceInstance

use of io.servicecomb.serviceregistry.api.registry.MicroserviceInstance in project java-chassis by ServiceComb.

the class TestRegistry method testFindServiceInstanceWithMicroServiceInstance.

@Test
public void testFindServiceInstanceWithMicroServiceInstance() {
    List<MicroserviceInstance> microserviceInstanceList = new ArrayList<MicroserviceInstance>();
    microserviceInstanceList.add(new MicroserviceInstance());
    new MockUp<ServiceRegistryClientImpl>() {

        @Mock
        List<MicroserviceInstance> findServiceInstance(String selfMicroserviceId, String appId, String serviceName, String versionRule) {
            return microserviceInstanceList;
        }
    };
    List<MicroserviceInstance> microserviceInstanceListt = RegistryUtils.findServiceInstance("appId", "serviceName", "versionRule");
    Assert.assertNotNull(microserviceInstanceListt);
}
Also used : ArrayList(java.util.ArrayList) MicroserviceInstance(io.servicecomb.serviceregistry.api.registry.MicroserviceInstance) MockUp(mockit.MockUp) Test(org.junit.Test)

Example 8 with MicroserviceInstance

use of io.servicecomb.serviceregistry.api.registry.MicroserviceInstance in project java-chassis by ServiceComb.

the class TestRegistry method testUpdateInstanceProperties.

@Test
public void testUpdateInstanceProperties() {
    MicroserviceInstance instance = RegistryUtils.getMicroserviceInstance();
    instance.setServiceId("1");
    instance.setInstanceId("1");
    new MockUp<ServiceRegistryClientImpl>() {

        @Mock
        public boolean updateInstanceProperties(String microserviceId, String microserviceInstanceId, Map<String, String> instanceProperties) {
            return true;
        }
    };
    Assert.assertEquals(1, instance.getProperties().size());
    Map<String, String> properties = new HashMap<>();
    properties.put("tag1", "value1");
    RegistryUtils.updateInstanceProperties(properties);
    Assert.assertEquals(properties, instance.getProperties());
    new MockUp<ServiceRegistryClientImpl>() {

        @Mock
        public boolean updateInstanceProperties(String microserviceId, String microserviceInstanceId, Map<String, String> instanceProperties) {
            return false;
        }
    };
    RegistryUtils.updateInstanceProperties(new HashMap<>());
    Assert.assertEquals(properties, instance.getProperties());
}
Also used : HashMap(java.util.HashMap) MicroserviceInstance(io.servicecomb.serviceregistry.api.registry.MicroserviceInstance) MockUp(mockit.MockUp) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.Test)

Example 9 with MicroserviceInstance

use of io.servicecomb.serviceregistry.api.registry.MicroserviceInstance in project java-chassis by ServiceComb.

the class ServiceRegistryClientImpl method findServiceInstance.

@Override
public List<MicroserviceInstance> findServiceInstance(String selfMicroserviceId, String appId, String serviceName, String versionRule) {
    Holder<FindInstancesResponse> holder = new Holder<>();
    IpPort ipPort = IpPortManager.INSTANCE.get();
    StringBuilder url = new StringBuilder(Const.MS_API_PATH);
    url.append(Const.INSTANCES_PATH);
    CountDownLatch countDownLatch = new CountDownLatch(1);
    RestUtils.get(ipPort, url.toString(), new RequestParam().addQueryParam("appId", appId).addQueryParam("serviceName", serviceName).addQueryParam("version", versionRule).addHeader("X-ConsumerId", selfMicroserviceId), syncHandler(countDownLatch, FindInstancesResponse.class, holder));
    try {
        countDownLatch.await();
        if (holder.value == null) {
            // error
            return null;
        }
        List<MicroserviceInstance> list = holder.value.getInstances();
        if (list == null) {
            return new ArrayList<>();
        }
        return list;
    } catch (Exception e) {
        LOGGER.error("find microservice instance {}/{}/{} failed", appId, serviceName, versionRule, e);
    }
    return null;
}
Also used : Holder(javax.xml.ws.Holder) ArrayList(java.util.ArrayList) MicroserviceInstance(io.servicecomb.serviceregistry.api.registry.MicroserviceInstance) IpPort(io.servicecomb.foundation.common.net.IpPort) CountDownLatch(java.util.concurrent.CountDownLatch) FindInstancesResponse(io.servicecomb.serviceregistry.api.response.FindInstancesResponse) ClientException(io.servicecomb.serviceregistry.client.ClientException)

Example 10 with MicroserviceInstance

use of io.servicecomb.serviceregistry.api.registry.MicroserviceInstance in project java-chassis by ServiceComb.

the class RegistryUtils method createMicroserviceInstance.

private static MicroserviceInstance createMicroserviceInstance() {
    MicroserviceInstance microserviceInstance = new MicroserviceInstance();
    microserviceInstance.setStage(DEFAULT_STAGE);
    Map<String, String> propertiesMap = InstancePropertiesLoader.INSTANCE.loadProperties();
    if (!isEmpty(propertiesMap)) {
        microserviceInstance.setProperties(propertiesMap);
    }
    // healthcheck
    if (RegistryClientFactory.getLocalModeFile().isEmpty()) {
        HealthCheck healthCheck = new HealthCheck();
        healthCheck.setMode(HealthCheckMode.HEARTBEAT);
        microserviceInstance.setHealthCheck(healthCheck);
    }
    return microserviceInstance;
}
Also used : HealthCheck(io.servicecomb.serviceregistry.api.registry.HealthCheck) MicroserviceInstance(io.servicecomb.serviceregistry.api.registry.MicroserviceInstance)

Aggregations

MicroserviceInstance (io.servicecomb.serviceregistry.api.registry.MicroserviceInstance)18 ArrayList (java.util.ArrayList)9 Test (org.junit.Test)9 HashMap (java.util.HashMap)6 MockUp (mockit.MockUp)5 Microservice (io.servicecomb.serviceregistry.api.registry.Microservice)4 MicroserviceKey (io.servicecomb.serviceregistry.api.MicroserviceKey)3 MicroserviceInstanceChangedEvent (io.servicecomb.serviceregistry.api.response.MicroserviceInstanceChangedEvent)3 HealthCheck (io.servicecomb.serviceregistry.api.registry.HealthCheck)2 ClientException (io.servicecomb.serviceregistry.client.ClientException)2 List (java.util.List)2 Map (java.util.Map)2 IpPort (io.servicecomb.foundation.common.net.IpPort)1 URIEndpointObject (io.servicecomb.foundation.common.net.URIEndpointObject)1 CseServer (io.servicecomb.loadbalance.CseServer)1 RegistryThread (io.servicecomb.serviceregistry.RegistryThread)1 FindInstancesResponse (io.servicecomb.serviceregistry.api.response.FindInstancesResponse)1 HeartbeatResponse (io.servicecomb.serviceregistry.api.response.HeartbeatResponse)1 InstanceCache (io.servicecomb.serviceregistry.cache.InstanceCache)1 ServiceRegistryClient (io.servicecomb.serviceregistry.client.ServiceRegistryClient)1