diff --git a/config/service_config.go b/config/service_config.go index 32104f03ddba1c7a24a43a7989287a9b711565e7..1021306d0b8b36b1b3b748b4c34a0c321e6facba 100644 --- a/config/service_config.go +++ b/config/service_config.go @@ -40,10 +40,13 @@ import ( "github.com/apache/dubbo-go/common/constant" "github.com/apache/dubbo-go/common/extension" "github.com/apache/dubbo-go/common/logger" + "github.com/apache/dubbo-go/metadata/service" "github.com/apache/dubbo-go/protocol" "github.com/apache/dubbo-go/protocol/protocolwrapper" ) +var remoteMetadataService service.MetadataService + // ServiceConfig is the configuration of the service provider type ServiceConfig struct { context context.Context @@ -223,6 +226,7 @@ func (c *ServiceConfig) Export() error { } c.exporters = append(c.exporters, exporter) } + PublishServiceDefinition(ivkURL) } c.exported.Store(true) return nil @@ -332,3 +336,17 @@ func (c *ServiceConfig) GetExportedUrls() []*common.URL { } return nil } + +func PublishServiceDefinition(url *common.URL) { + if remoteMetadataService == nil { + var err error + if remoteMetadataService, err = extension.GetMetadataService("remote"); err != nil { + logger.Warnf("get remote metadataService fail. %v", err) + return + } else if remoteMetadataService == nil { + logger.Info("get remote metadataService will nil.") + return + } + } + remoteMetadataService.PublishServiceDefinition(url) +}