Skip to content

Commit 4112c79

Browse files
authored
Merge pull request #10 from luohuixi/main
111
2 parents 749a073 + 25566e3 commit 4112c79

87 files changed

Lines changed: 2383 additions & 1736 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

example/config/config.go

Lines changed: 34 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package main
22

33
import (
44
"log"
5-
"time"
65

7-
"github.com/muxi-Infra/muxi-micro/pkg/config"
6+
"github.com/muxi-Infra/muxi-micro/pkg/config/local"
7+
"github.com/muxi-Infra/muxi-micro/pkg/config/nacos"
88
)
99

1010
type DatabaseConfig struct {
@@ -29,74 +29,54 @@ type Config struct {
2929
}
3030

3131
func Local() {
32-
// 选择本地就newloaclconfig
33-
cfg, err := config.NewLocalConfig(&Config{}, "config.yaml")
34-
if err != nil { //结构体传入时不用指针就报错
35-
log.Fatal(err)
36-
}
37-
// 加载配置
38-
err = cfg.LoadData()
39-
// 检查是否有错误
32+
cfg, err := local.LoadLocalConfig[Config]("./example.yaml", local.WithWatchChanSize(10))
4033
if err != nil {
41-
log.Fatalf("加载配置失败: %v", err)
34+
log.Fatal(err)
4235
}
43-
// 输出时需要类型断言
44-
log.Println(cfg.GetData().(*Config).Database.MySQL.Host)
36+
defer cfg.Close()
4537

46-
//ch用于监听热更新信号
47-
ch := cfg.WatchData()
48-
49-
go func() {
50-
for err := range ch {
51-
// 用户自定义热更新后的操作
52-
if err == nil {
53-
log.Println(cfg.GetData().(*Config).Database.MySQL.Host)
54-
} else {
55-
log.Println("err: ", err)
56-
}
57-
}
58-
}()
38+
data := cfg.GetData()
39+
log.Printf("MySQL Host: %s", data.Database.MySQL.Host)
40+
log.Printf("Redis DB: %s", data.Database.Redis.DB)
5941

60-
time.Sleep(20 * time.Second)
61-
// 其实local的关闭不会报错,nacos才会
62-
err = cfg.Close()
63-
if err != nil {
64-
log.Println(err)
42+
ch := cfg.WatchData()
43+
for range ch {
44+
updatedData := cfg.GetData()
45+
log.Printf("MySQL Host: %s", updatedData.Database.MySQL.Host)
6546
}
6647
}
6748

6849
func Nacos() {
69-
// 预先配置
70-
c := config.NewClientConfig("public", "nacos", "nacos", 5000)
71-
s := config.NewServerConfig([]string{"localhost"}, []uint64{8848})
72-
// GET
73-
cfg2, err := config.NewNacosConfig("key3", "1GRUOP", "", c, s)
50+
clientAddr := []nacos.ClientAddr{
51+
{Ip: "localhost", Port: 8848},
52+
}
53+
client, err := nacos.NewNacosClient(
54+
"new",
55+
"nacos",
56+
"nacos",
57+
"",
58+
1000,
59+
clientAddr,
60+
)
7461
if err != nil {
7562
log.Fatal(err)
7663
}
77-
err = cfg2.LoadData()
64+
defer client.CloseClient()
65+
66+
cfg, err := nacos.LoadNacosConfig[Config](client, "test", "test")
7867
if err != nil {
7968
log.Fatal(err)
8069
}
81-
log.Println(cfg2.GetData())
70+
defer cfg.Close()
8271

83-
// 监听
84-
ch := cfg2.WatchData()
85-
go func() {
86-
for err := range ch {
87-
// 用户自定义热更新后的操作
88-
if err != nil {
89-
log.Println(err)
90-
} else {
91-
log.Println("配置已更新:", cfg2.GetData())
92-
}
93-
}
94-
}()
72+
data := cfg.GetData()
73+
log.Printf("MySQL Host: %s", data.Database.MySQL.Host)
74+
log.Printf("Redis DB: %s", data.Database.Redis.DB)
9575

96-
time.Sleep(10 * time.Second)
97-
err = cfg2.Close()
98-
if err != nil {
99-
log.Println(err)
76+
ch := cfg.WatchData()
77+
for range ch {
78+
updatedData := cfg.GetData()
79+
log.Printf("MySQL Host: %s", updatedData.Database.MySQL.Host)
10080
}
10181
}
10282

example/config/example.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
database:
2+
mysql:
3+
host: "localhost"
4+
port: "3306"
5+
username: "root"
6+
password: "password"
7+
redis:
8+
host: "localhost"
9+
port: "6379"
10+
username: "root"
11+
password: "password"
12+
db: "0"
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package micro
2+
3+
import (
4+
pb "github.com/muxi-Infra/muxi-micro/example/transport/grpc/proto"
5+
"github.com/muxi-Infra/muxi-micro/pkg/transport/grpc"
6+
"github.com/muxi-Infra/muxi-micro/pkg/transport/grpc/discovery/etcd"
7+
)
8+
9+
// 和proto一起生成的客户端模板的大致形式
10+
func HelloClient() (pb.HelloServiceClient, error) {
11+
center, err := etcd.NewEtcdDiscovery()
12+
if err != nil {
13+
return nil, err
14+
}
15+
16+
client, err := grpc.NewGRPCClient(
17+
grpc.WithServiceDiscovery(center),
18+
grpc.WithDiscoveryName("test"),
19+
)
20+
if err != nil {
21+
return nil, err
22+
}
23+
defer client.Close()
24+
25+
c := pb.NewHelloServiceClient(client.Conn())
26+
return c, nil
27+
}
Lines changed: 35 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
syntax = "proto3";
22

3-
option go_package = "./v1";
3+
option go_package = ".;proto";
44

55
message HelloRequest {
66
string username = 1;
@@ -13,4 +13,4 @@ message HelloResponse {
1313

1414
service HelloService {
1515
rpc Hello(HelloRequest) returns (HelloResponse);
16-
}
16+
}

tool/new/template/local/hello_grpc.pb.go.tpl renamed to example/transport/grpc/proto/hello_grpc.pb.go

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package server
2+
3+
import (
4+
"github.com/muxi-Infra/muxi-micro/pkg/transport/grpc"
5+
"github.com/muxi-Infra/muxi-micro/pkg/transport/grpc/registry/etcd"
6+
)
7+
8+
// 和proto一起生成的服务端模板的大致形式
9+
func HelloServer() (*grpc.GRPCServer, error) {
10+
center, err := etcd.NewEtcdRegistry()
11+
if err != nil {
12+
return nil, err
13+
}
14+
15+
server := grpc.NewGRPCServer(
16+
grpc.WithName("test"),
17+
grpc.WithRegistrationCenter(center),
18+
)
19+
20+
return server, nil
21+
}

0 commit comments

Comments
 (0)