/
main.go
64 lines (53 loc) · 1.24 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package main
import (
"flag"
"fmt"
"github.com/sestack/smq/broker"
"github.com/sestack/smq/global"
"github.com/sestack/smq/initialize"
"os"
"os/signal"
"runtime"
)
// @securityDefinitions.apikey ApiKeyAuth
// @in header
// @name x-token
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
var (
err error
)
cfg := flag.String("c", "./config.yaml", "configuration file")
version := flag.Bool("v", false, "show version")
flag.Parse()
if *version {
fmt.Printf("version %s\n", broker.Version)
os.Exit(0)
}
global.VP, err = initialize.InitConfig(*cfg)
if err != nil {
fmt.Printf("failed to parse configuration file error:%v\n", err)
os.Exit(1)
}
global.LOGGER, err = initialize.InitZap()
if err != nil {
fmt.Printf("failed to initialize log component error:%v\n", err)
os.Exit(1)
}
broker.BROKER, err = broker.NewBroker(global.CONFIG)
if err != nil {
fmt.Printf("failed to initialize Broker error:%v\n", err)
os.Exit(1)
}
broker.BROKER.Start()
s := waitForSignal()
fmt.Println("signal received, broker closed.", s)
}
func waitForSignal() os.Signal {
signalChan := make(chan os.Signal, 1)
defer close(signalChan)
signal.Notify(signalChan, os.Kill, os.Interrupt)
s := <-signalChan
signal.Stop(signalChan)
return s
}