mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
1
This commit is contained in:
parent
585e56783b
commit
c48a082602
@ -27,19 +27,16 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
conf "github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
conf "github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
kdisc "github.com/openimsdk/open-im-server/v3/pkg/common/discovery"
|
|
||||||
disetcd "github.com/openimsdk/open-im-server/v3/pkg/common/discovery/etcd"
|
disetcd "github.com/openimsdk/open-im-server/v3/pkg/common/discovery/etcd"
|
||||||
"github.com/openimsdk/tools/discovery"
|
"github.com/openimsdk/tools/discovery"
|
||||||
"github.com/openimsdk/tools/discovery/etcd"
|
"github.com/openimsdk/tools/discovery/etcd"
|
||||||
"github.com/openimsdk/tools/errs"
|
"github.com/openimsdk/tools/errs"
|
||||||
"github.com/openimsdk/tools/log"
|
"github.com/openimsdk/tools/log"
|
||||||
"github.com/openimsdk/tools/mw"
|
|
||||||
"github.com/openimsdk/tools/system/program"
|
"github.com/openimsdk/tools/system/program"
|
||||||
"github.com/openimsdk/tools/utils/datautil"
|
"github.com/openimsdk/tools/utils/datautil"
|
||||||
"github.com/openimsdk/tools/utils/network"
|
"github.com/openimsdk/tools/utils/network"
|
||||||
"github.com/openimsdk/tools/utils/runtimeenv"
|
"github.com/openimsdk/tools/utils/runtimeenv"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials/insecure"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
@ -49,7 +46,7 @@ type Config struct {
|
|||||||
Index conf.Index
|
Index conf.Index
|
||||||
}
|
}
|
||||||
|
|
||||||
func Start(ctx context.Context, config *Config, client discovery.Conn, server grpc.ServiceRegistrar) error {
|
func Start(ctx context.Context, config *Config, client discovery.Conn, _ grpc.ServiceRegistrar) error {
|
||||||
apiPort, err := datautil.GetElemByIndex(config.API.Api.Ports, int(config.Index))
|
apiPort, err := datautil.GetElemByIndex(config.API.Api.Ports, int(config.Index))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -26,18 +26,15 @@ type CronTaskConfig struct {
|
|||||||
CronTask config.CronTask
|
CronTask config.CronTask
|
||||||
Share config.Share
|
Share config.Share
|
||||||
Discovery config.Discovery
|
Discovery config.Discovery
|
||||||
|
|
||||||
runTimeEnv string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Start(ctx context.Context, conf *CronTaskConfig) error {
|
func Start(ctx context.Context, conf *CronTaskConfig) error {
|
||||||
conf.runTimeEnv = runtimeenv.PrintRuntimeEnvironment()
|
|
||||||
|
|
||||||
log.CInfo(ctx, "CRON-TASK server is initializing", "runTimeEnv", conf.runTimeEnv, "chatRecordsClearTime", conf.CronTask.CronExecuteTime, "msgDestructTime", conf.CronTask.RetainChatRecords)
|
log.CInfo(ctx, "CRON-TASK server is initializing", "runTimeEnv", runtimeenv.RuntimeEnvironment(), "chatRecordsClearTime", conf.CronTask.CronExecuteTime, "msgDestructTime", conf.CronTask.RetainChatRecords)
|
||||||
if conf.CronTask.RetainChatRecords < 1 {
|
if conf.CronTask.RetainChatRecords < 1 {
|
||||||
return errs.New("msg destruct time must be greater than 1").Wrap()
|
return errs.New("msg destruct time must be greater than 1").Wrap()
|
||||||
}
|
}
|
||||||
client, err := kdisc.NewDiscoveryRegister(&conf.Discovery, conf.runTimeEnv, nil)
|
client, err := kdisc.NewDiscoveryRegister(&conf.Discovery, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errs.WrapMsg(err, "failed to register discovery service")
|
return errs.WrapMsg(err, "failed to register discovery service")
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import (
|
|||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/internal/api"
|
"github.com/openimsdk/open-im-server/v3/internal/api"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/startrpc"
|
||||||
"github.com/openimsdk/open-im-server/v3/version"
|
"github.com/openimsdk/open-im-server/v3/version"
|
||||||
"github.com/openimsdk/tools/system/program"
|
"github.com/openimsdk/tools/system/program"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -32,7 +33,7 @@ type ApiCmd struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewApiCmd() *ApiCmd {
|
func NewApiCmd() *ApiCmd {
|
||||||
apiConfig := api.Config{AllConfig: &config.AllConfig{}}
|
var apiConfig api.Config
|
||||||
ret := &ApiCmd{apiConfig: &apiConfig}
|
ret := &ApiCmd{apiConfig: &apiConfig}
|
||||||
ret.configMap = map[string]any{
|
ret.configMap = map[string]any{
|
||||||
config.DiscoveryConfigFilename: &apiConfig.Discovery,
|
config.DiscoveryConfigFilename: &apiConfig.Discovery,
|
||||||
@ -61,7 +62,7 @@ func NewApiCmd() *ApiCmd {
|
|||||||
ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap))
|
ret.RootCmd = NewRootCmd(program.GetProcessName(), WithConfigMap(ret.configMap))
|
||||||
ret.ctx = context.WithValue(context.Background(), "version", version.Version)
|
ret.ctx = context.WithValue(context.Background(), "version", version.Version)
|
||||||
ret.Command.RunE = func(cmd *cobra.Command, args []string) error {
|
ret.Command.RunE = func(cmd *cobra.Command, args []string) error {
|
||||||
apiConfig.ConfigPath = ret.configPath
|
apiConfig.ConfigPath = config.Path(ret.configPath)
|
||||||
return ret.runE()
|
return ret.runE()
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
@ -72,5 +73,19 @@ func (a *ApiCmd) Exec() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *ApiCmd) runE() error {
|
func (a *ApiCmd) runE() error {
|
||||||
return api.Start(a.ctx, a.Index(), a.apiConfig)
|
a.apiConfig.Index = config.Index(a.Index())
|
||||||
|
var prometheus config.Prometheus
|
||||||
|
return startrpc.Start(
|
||||||
|
a.ctx, &a.apiConfig.Discovery,
|
||||||
|
&prometheus,
|
||||||
|
a.apiConfig.API.Api.ListenIP, "",
|
||||||
|
false,
|
||||||
|
nil, int(a.apiConfig.Index),
|
||||||
|
a.apiConfig.Discovery.RpcService.MessageGateway,
|
||||||
|
&a.apiConfig.Notification,
|
||||||
|
a.apiConfig,
|
||||||
|
[]string{},
|
||||||
|
[]string{},
|
||||||
|
api.Start,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
@ -57,10 +57,8 @@ func (m *MsgGatewayCmd) Exec() error {
|
|||||||
|
|
||||||
func (m *MsgGatewayCmd) runE() error {
|
func (m *MsgGatewayCmd) runE() error {
|
||||||
m.msgGatewayConfig.Index = config.Index(m.Index())
|
m.msgGatewayConfig.Index = config.Index(m.Index())
|
||||||
//return msggateway.Start(m.ctx, m.msgGatewayConfig, "", "")
|
|
||||||
//return msggateway.Start(m.ctx, m.msgGatewayConfig, "", "")
|
|
||||||
var prometheus config.Prometheus
|
|
||||||
rpc := m.msgGatewayConfig.MsgGateway.RPC
|
rpc := m.msgGatewayConfig.MsgGateway.RPC
|
||||||
|
var prometheus config.Prometheus
|
||||||
return startrpc.Start(
|
return startrpc.Start(
|
||||||
m.ctx, &m.msgGatewayConfig.Discovery,
|
m.ctx, &m.msgGatewayConfig.Discovery,
|
||||||
&prometheus,
|
&prometheus,
|
||||||
@ -68,8 +66,8 @@ func (m *MsgGatewayCmd) runE() error {
|
|||||||
rpc.AutoSetPorts,
|
rpc.AutoSetPorts,
|
||||||
rpc.Ports, int(m.msgGatewayConfig.Index),
|
rpc.Ports, int(m.msgGatewayConfig.Index),
|
||||||
m.msgGatewayConfig.Discovery.RpcService.MessageGateway,
|
m.msgGatewayConfig.Discovery.RpcService.MessageGateway,
|
||||||
"",
|
nil,
|
||||||
m.msgGatewayConfig.MsgGateway,
|
m.msgGatewayConfig,
|
||||||
[]string{},
|
[]string{},
|
||||||
[]string{},
|
[]string{},
|
||||||
msggateway.Start,
|
msggateway.Start,
|
||||||
|
@ -19,6 +19,7 @@ import (
|
|||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/internal/msgtransfer"
|
"github.com/openimsdk/open-im-server/v3/internal/msgtransfer"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/startrpc"
|
||||||
"github.com/openimsdk/open-im-server/v3/version"
|
"github.com/openimsdk/open-im-server/v3/version"
|
||||||
"github.com/openimsdk/tools/system/program"
|
"github.com/openimsdk/tools/system/program"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -57,5 +58,18 @@ func (m *MsgTransferCmd) Exec() error {
|
|||||||
|
|
||||||
func (m *MsgTransferCmd) runE() error {
|
func (m *MsgTransferCmd) runE() error {
|
||||||
m.msgTransferConfig.Index = config.Index(m.Index())
|
m.msgTransferConfig.Index = config.Index(m.Index())
|
||||||
return msgtransfer.Start(m.ctx, m.Index(), m.msgTransferConfig)
|
var prometheus config.Prometheus
|
||||||
|
return startrpc.Start(
|
||||||
|
m.ctx, &m.msgTransferConfig.Discovery,
|
||||||
|
&prometheus,
|
||||||
|
"", "",
|
||||||
|
false,
|
||||||
|
nil, int(m.msgTransferConfig.Index),
|
||||||
|
m.msgTransferConfig.Discovery.RpcService.MessageGateway,
|
||||||
|
nil,
|
||||||
|
m.msgTransferConfig,
|
||||||
|
[]string{},
|
||||||
|
[]string{},
|
||||||
|
msgtransfer.Start,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,40 +0,0 @@
|
|||||||
package cmd
|
|
||||||
|
|
||||||
//
|
|
||||||
//type StartFunc[C any] func(ctx context.Context, config *C, client discovery.Conn, server grpc.ServiceRegistrar) error
|
|
||||||
//
|
|
||||||
//func Start[C any](fn StartFunc[C]) {
|
|
||||||
// var _ RootCmd
|
|
||||||
// cmd := cobra.Command{
|
|
||||||
// Use: "Start openIM application",
|
|
||||||
// Long: fmt.Sprintf(`Start %s `, program.GetProcessName()),
|
|
||||||
// PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
|
|
||||||
// return rootCmd.persistentPreRun(cmd, opts...)
|
|
||||||
// },
|
|
||||||
// SilenceUsage: true,
|
|
||||||
// SilenceErrors: false,
|
|
||||||
// }
|
|
||||||
// cmd.Flags().StringP(config.FlagConf, "c", "", "path of config directory")
|
|
||||||
// cmd.Flags().IntP(config.FlagTransferIndex, "i", 0, "process startup sequence number")
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//func start[C any](fn StartFunc[C]) error {
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// v := viper.New()
|
|
||||||
// v.SetConfigType("yaml")
|
|
||||||
// if err := v.ReadConfig(bytes.NewReader(confData)); err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// fn := func(conf *mapstructure.DecoderConfig) {
|
|
||||||
// conf.TagName = config.StructTagName
|
|
||||||
// }
|
|
||||||
// if err := v.Unmarshal(val, fn); err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return nil
|
|
||||||
//}
|
|
@ -22,7 +22,6 @@ import (
|
|||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/startrpc"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/startrpc"
|
||||||
"github.com/openimsdk/open-im-server/v3/version"
|
"github.com/openimsdk/open-im-server/v3/version"
|
||||||
"github.com/openimsdk/tools/system/program"
|
"github.com/openimsdk/tools/system/program"
|
||||||
"github.com/openimsdk/tools/utils/network"
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -94,6 +94,9 @@ func Start[T any](ctx context.Context, discovery *conf.Discovery, prometheusConf
|
|||||||
grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"LoadBalancingPolicy": "%s"}`, "round_robin")),
|
grpc.WithDefaultServiceConfig(fmt.Sprintf(`{"LoadBalancingPolicy": "%s"}`, "round_robin")),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
sigs := make(chan os.Signal, 1)
|
||||||
|
signal.Notify(sigs, syscall.SIGTERM)
|
||||||
|
|
||||||
var gsrv grpcServiceRegistrar
|
var gsrv grpcServiceRegistrar
|
||||||
|
|
||||||
err = rpcFn(ctx, config, client, &gsrv)
|
err = rpcFn(ctx, config, client, &gsrv)
|
||||||
@ -161,9 +164,6 @@ func Start[T any](ctx context.Context, discovery *conf.Discovery, prometheusConf
|
|||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
sigs := make(chan os.Signal, 1)
|
|
||||||
signal.Notify(sigs, syscall.SIGTERM)
|
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case val := <-sigs:
|
case val := <-sigs:
|
||||||
log.ZDebug(ctx, "recv exit", "signal", val.String())
|
log.ZDebug(ctx, "recv exit", "signal", val.String())
|
||||||
|
@ -32,7 +32,6 @@ import (
|
|||||||
"github.com/openimsdk/tools/mq/kafka"
|
"github.com/openimsdk/tools/mq/kafka"
|
||||||
"github.com/openimsdk/tools/s3/minio"
|
"github.com/openimsdk/tools/s3/minio"
|
||||||
"github.com/openimsdk/tools/system/program"
|
"github.com/openimsdk/tools/system/program"
|
||||||
"github.com/openimsdk/tools/utils/runtimeenv"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const maxRetry = 180
|
const maxRetry = 180
|
||||||
@ -84,37 +83,36 @@ func initConfig(configDir string) (*config.Mongo, *config.Redis, *config.Kafka,
|
|||||||
discovery = &config.Discovery{}
|
discovery = &config.Discovery{}
|
||||||
thirdConfig = &config.Third{}
|
thirdConfig = &config.Third{}
|
||||||
)
|
)
|
||||||
runtimeEnv := runtimeenv.PrintRuntimeEnvironment()
|
|
||||||
|
|
||||||
err := config.Load(configDir, config.MongodbConfigFileName, config.EnvPrefixMap[config.MongodbConfigFileName], runtimeEnv, mongoConfig)
|
err := config.Load(configDir, config.MongodbConfigFileName, config.EnvPrefixMap[config.MongodbConfigFileName], mongoConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, nil, err
|
return nil, nil, nil, nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = config.Load(configDir, config.RedisConfigFileName, config.EnvPrefixMap[config.RedisConfigFileName], runtimeEnv, redisConfig)
|
err = config.Load(configDir, config.RedisConfigFileName, config.EnvPrefixMap[config.RedisConfigFileName], redisConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, nil, err
|
return nil, nil, nil, nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = config.Load(configDir, config.KafkaConfigFileName, config.EnvPrefixMap[config.KafkaConfigFileName], runtimeEnv, kafkaConfig)
|
err = config.Load(configDir, config.KafkaConfigFileName, config.EnvPrefixMap[config.KafkaConfigFileName], kafkaConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, nil, err
|
return nil, nil, nil, nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = config.Load(configDir, config.OpenIMRPCThirdCfgFileName, config.EnvPrefixMap[config.OpenIMRPCThirdCfgFileName], runtimeEnv, thirdConfig)
|
err = config.Load(configDir, config.OpenIMRPCThirdCfgFileName, config.EnvPrefixMap[config.OpenIMRPCThirdCfgFileName], thirdConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, nil, err
|
return nil, nil, nil, nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if thirdConfig.Object.Enable == "minio" {
|
if thirdConfig.Object.Enable == "minio" {
|
||||||
err = config.Load(configDir, config.MinioConfigFileName, config.EnvPrefixMap[config.MinioConfigFileName], runtimeEnv, minioConfig)
|
err = config.Load(configDir, config.MinioConfigFileName, config.EnvPrefixMap[config.MinioConfigFileName], minioConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, nil, err
|
return nil, nil, nil, nil, nil, err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
minioConfig = nil
|
minioConfig = nil
|
||||||
}
|
}
|
||||||
err = config.Load(configDir, config.DiscoveryConfigFilename, config.EnvPrefixMap[config.DiscoveryConfigFilename], runtimeEnv, discovery)
|
err = config.Load(configDir, config.DiscoveryConfigFilename, config.EnvPrefixMap[config.DiscoveryConfigFilename], discovery)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, nil, err
|
return nil, nil, nil, nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func readConfig[T any](dir string, name string) (*T, error) {
|
func readConfig[T any](dir string, name string) (*T, error) {
|
||||||
if runtimeenv.PrintRuntimeEnvironment() == config.KUBERNETES {
|
if runtimeenv.RuntimeEnvironment() == config.KUBERNETES {
|
||||||
dir = os.Getenv(config.MountConfigFilePath)
|
dir = os.Getenv(config.MountConfigFilePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user