voucher/cmd/server/main.go

131 lines
2.9 KiB
Go

package main
import (
"flag"
"fmt"
knacos "github.com/go-kratos/kratos/contrib/config/nacos/v2"
"github.com/go-kratos/kratos/v2"
"github.com/go-kratos/kratos/v2/config"
"github.com/go-kratos/kratos/v2/log"
"github.com/go-kratos/kratos/v2/transport/http"
"github.com/gogf/gf/util/gconv"
"github.com/nacos-group/nacos-sdk-go/common/constant"
_ "go.uber.org/automaxprocs"
"gopkg.in/yaml.v2"
"os"
"voucher/internal/conf"
log2 "voucher/internal/pkg/log"
"voucher/internal/pkg/mapstructure"
"voucher/internal/pkg/nacos"
"voucher/internal/server"
)
// go build -ldflags "-X main.Version=x.y.z"
var (
// Name is the name of the compiled software.
Name = "voucher.api"
// Version is the version of the compiled software.
Version string
id, _ = os.Hostname()
)
var (
nacosIp = ""
nacosPort = 0
nacosSpace = ""
nacosUsername = ""
nacosPassword = ""
)
const (
GROUP = "VOUCHER"
DATA_ID = "VOUCHER"
)
func init() {
flag.StringVar(&nacosIp, "nacosIp", "120.55.12.245", "nacos ip address")
flag.IntVar(&nacosPort, "nacosPort", 8848, "nacos port")
flag.StringVar(&nacosSpace, "nacosSpace", "voucher", "nacos space")
flag.StringVar(&nacosUsername, "nacosUsername", "nacos", "nacos passowrd")
flag.StringVar(&nacosPassword, "nacosPassword", "LsxdNacos@2025", "nacos passowrd")
flag.Parse()
fmt.Println(nacosIp, nacosPort)
}
func newApp(
logger log.Logger,
httpServer *http.Server,
consumerServer *server.Consumer,
) *kratos.App {
return kratos.New(
kratos.ID(id),
kratos.Name(Name),
kratos.Version(Version),
kratos.Logger(logger),
kratos.Server(
httpServer,
consumerServer,
),
)
}
func loadConfig() *conf.Bootstrap {
fmt.Printf(
"nacosIp:%s,nacosPort:%d,nacosSpace:%s,nacosUsername:%s,nacosPassword:%s,GROUP:%s,DATA_ID:%s",
nacosIp,
nacosPort,
nacosSpace,
nacosUsername,
nacosPassword,
GROUP,
DATA_ID,
)
iConfigClient := nacos.NewNacosConfig(
nacosIp,
uint64(nacosPort),
constant.WithNamespaceId(nacosSpace),
constant.WithUsername(nacosUsername),
constant.WithPassword(nacosPassword),
)
source := []config.Source{knacos.NewConfigSource(
iConfigClient,
knacos.WithGroup(GROUP),
knacos.WithDataID(DATA_ID),
)}
bc := &conf.Bootstrap{}
for _, c := range source {
if configs, err := c.Load(); err != nil {
panic(err)
} else {
for _, v := range configs {
var rs = make(map[string]interface{})
err = yaml.Unmarshal(v.Value, &rs)
err = mapstructure.Decode(rs, &bc)
}
}
}
fmt.Println("远程nacos中的yaml文件的配置:>>>>>> ", gconv.String(&bc))
return bc
}
func main() {
bc := loadConfig()
businessLogger := log2.NewBusinessLogger(bc.Logs.Business, Name, Name, Version)
accessLogger := log2.NewAccessLogger(bc.Logs.Business, id, Name, Version)
app, cleanup, err := wireApp(bc, businessLogger, accessLogger)
if err != nil {
panic(err)
}
defer cleanup()
// start and wait for stop signal
if err = app.Run(); err != nil {
panic(err)
}
}