@ -15,13 +15,14 @@
package discovery
import (
"strings"
"time"
"google.golang.org/grpc"
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
"github.com/openimsdk/tools/discovery"
"github.com/openimsdk/tools/discovery/ inprocess "
"github.com/openimsdk/tools/discovery/ standalone "
"github.com/openimsdk/tools/utils/runtimeenv"
"github.com/openimsdk/tools/discovery/kubernetes"
@ -33,17 +34,28 @@ import (
// NewDiscoveryRegister creates a new service discovery and registry client based on the provided environment type.
func NewDiscoveryRegister ( discovery * config . Discovery , watchNames [ ] string ) ( discovery . SvcDiscoveryRegistry , error ) {
if config . Standalone ( ) {
return inprocess . GetSvcDiscoveryRegistry ( ) , nil
return standalone . GetSvcDiscoveryRegistry ( ) , nil
}
if runtimeenv . RuntimeEnvironment ( ) == config . KUBERNETES {
return kubernetes . NewConnManager ( discovery . Kubernetes . Namespace , nil ,
runtimeEnvironment := runtimeenv . RuntimeEnvironment ( )
discoveryType := discovery . Enable
if discoveryType == "" && runtimeEnvironment == config . KUBERNETES {
discoveryType = config . KUBERNETES
}
if discoveryType == config . KUBERNETES && runtimeEnvironment != config . KUBERNETES {
return nil , errs . New ( "unsupported discovery type" , "type" , discoveryType ) . Wrap ( )
}
switch discoveryType {
case config . KUBERNETES :
for i := range watchNames {
watchNames [ i ] = strings . Split ( watchNames [ i ] , ":" ) [ 0 ]
}
return kubernetes . NewConnManager ( discovery . Kubernetes . Namespace , watchNames ,
grpc . WithDefaultCallOptions (
grpc . MaxCallSendMsgSize ( 1024 * 1024 * 20 ) ,
) ,
grpc . WithDefaultServiceConfig ( ` { "loadBalancingPolicy":"round_robin"} ` ) ,
)
}
switch discovery . Enable {
case config . ETCD :
return etcd . NewSvcDiscoveryRegistry (
discovery . Etcd . RootDirectory ,
@ -53,6 +65,6 @@ func NewDiscoveryRegister(discovery *config.Discovery, watchNames []string) (dis
etcd . WithMaxCallSendMsgSize ( 20 * 1024 * 1024 ) ,
etcd . WithUsernameAndPassword ( discovery . Etcd . Username , discovery . Etcd . Password ) )
default :
return nil , errs . New ( "unsupported discovery type" , "type" , discovery . Enabl e) . Wrap ( )
return nil , errs . New ( "unsupported discovery type" , "type" , discovery Typ e) . Wrap ( )
}
}