请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于长函数

在每个模块中的main函数写的太长,不利于维护,可不可以将初始化注册中心:

	consul:=consul.NewRegistry(func(options *registry.Options) {
		options.Addrs = []string{
			consulHost+":"+strconv.FormatInt(consulPort,10),
		}
	})

初始化数据库:

	db,err := gorm.Open("mysql",mysqlInfo.User+":"+mysqlInfo.Pwd+"@("+mysqlInfo.Host+":3306)/"+mysqlInfo.Database+"?charset=utf8&parseTime=True&loc=Local")
	if err !=nil {
        //命令行输出下,方便查看错误
		fmt.Println(err)
		common.Fatal(err)
	}

初始化k8s:

	var kubeconfig *string
	if home := homedir.HomeDir(); home != "" {
		kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
	} else {
		kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
	}
	flag.Parse()
	config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
	if err != nil {
		common.Fatal(err.Error())
	}

	//在集群中外的配置
	//config, err := rest.InClusterConfig()
	//if err != nil {
	//	panic(err.Error())
	//}

	// create the clientset
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		common.Fatal(err.Error())
	}

创建服务:

	service := micro.NewService(
		//自定义服务地址,且必须写在其它参数前面
		micro.Server(server.NewServer(func(options *server.Options) {
			options.Advertise =serviceHost+":"+servicePort
		})),
		micro.Name("go.micro.service.middleware"),
		micro.Version("latest"),
		//指定服务端口
		micro.Address(":"+servicePort),
		//添加注册中心
		micro.Registry(consul),
		//添加链路追踪
		micro.WrapHandler(opentracing2.NewHandlerWrapper(opentracing.GlobalTracer())),
		micro.WrapClient(opentracing2.NewClientWrapper(opentracing.GlobalTracer())),
		//只作为客户端的时候起作用,如果存在调用别人的情况,原则上不去主动调用
		//micro.WrapClient(hystrix2.NewClientHystrixWrapper()),
		//添加限流
		micro.WrapHandler(ratelimit.NewHandlerWrapper(1000)),
	)

这些代码都放到common这个独立的模块,这样其他模块在初始化的时候直接调用common就可以了?

正在回答 回答被采纳积分+3

2回答

Cap 2023-03-31 14:27:15

如果要main更加简洁的话可以通过通用函数的方法放到common中,但是这些方法基本上只在main中使用。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕瓜9063200 #1
    那这些函数放到项目模块下的common包还是放到仓库独立的common模块好一点
    回复 有任何疑惑可以回复我~ 2023-03-31 14:57:55
  • Cap 回复 提问者 慕瓜9063200 #2
    建议还是放到main.go 中或者放到main.go 同级目录建立个单独文件。
    回复 有任何疑惑可以回复我~ 2023-04-06 22:39:31
Cap 2023-03-31 14:27:15

如果要main更加简洁的话可以通过通用函数的方法放到common中,但是这些方法基本上只在main中使用。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信