diff --git a/registry/servicediscovery/service_discovery_registry.go b/registry/servicediscovery/service_discovery_registry.go index 6b25bc60ef1e8cae5ed0e0c1ae3cbe492df1c107..30264116a90f15b9853dd375639c63856998101e 100644 --- a/registry/servicediscovery/service_discovery_registry.go +++ b/registry/servicediscovery/service_discovery_registry.go @@ -35,7 +35,7 @@ import ( "github.com/apache/dubbo-go/common/observer" "github.com/apache/dubbo-go/metadata/mapping" "github.com/apache/dubbo-go/metadata/service" - "github.com/apache/dubbo-go/metadata/service/inmemory" + "github.com/apache/dubbo-go/metadata/service/remote" "github.com/apache/dubbo-go/registry" "github.com/apache/dubbo-go/registry/servicediscovery/proxy" "github.com/apache/dubbo-go/registry/servicediscovery/synthesizer" @@ -76,8 +76,10 @@ func newServiceDiscoveryRegistry(url *common.URL) (registry.Registry, error) { subscribedServices := parseServices(url.GetParam(constant.SUBSCRIBED_SERVICE_NAMES_KEY, "")) subscribedURLsSynthesizers := synthesizer.GetAllSynthesizer() serviceNameMapping := extension.GetServiceNameMapping(url.GetParam(constant.SERVICE_NAME_MAPPING_KEY, "")) - // TODO it's need to get implement by factory - metaDataService := inmemory.NewMetadataService() + metaDataService, err := remote.NewMetadataService() + if err != nil { + return nil, perrors.WithMessage(err, "could not init metadata service") + } return &serviceDiscoveryRegistry{ url: url, serviceDiscovery: serviceDiscovery, @@ -91,11 +93,17 @@ func newServiceDiscoveryRegistry(url *common.URL) (registry.Registry, error) { } func (s *serviceDiscoveryRegistry) UnRegister(url common.URL) error { - panic("implement me") + if !shouldRegister(url) { + return nil + } + return s.metaDataService.UnexportURL(url) } -func (s *serviceDiscoveryRegistry) UnSubscribe(*common.URL, registry.NotifyListener) error { - panic("implement me") +func (s *serviceDiscoveryRegistry) UnSubscribe(url *common.URL, listener registry.NotifyListener) error { + if !shouldSubscribe(*url) { + return nil + } + return s.metaDataService.UnsubscribeURL(*url) } func creatServiceDiscovery(url *common.URL) (registry.ServiceDiscovery, error) { @@ -125,6 +133,7 @@ func (s *serviceDiscoveryRegistry) GetUrl() common.URL { } func (s *serviceDiscoveryRegistry) IsAvailable() bool { + // TODO(whether available depends on metadata service and service discovery) return true }