This repository was archived by the owner on Dec 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathexample.go
98 lines (80 loc) · 1.96 KB
/
example.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package main
import (
"os"
"sync"
"time"
log "github.com/InVisionApp/go-logger"
logshim "github.com/InVisionApp/go-logger/shims/logrus"
"github.com/InVisionApp/go-master"
"github.com/InVisionApp/go-master/backend"
"github.com/InVisionApp/go-master/backend/mongo"
"github.com/InVisionApp/go-master/backend/mysql"
"github.com/sirupsen/logrus"
)
var (
logger log.Logger
)
func init() {
l := logrus.New()
l.SetLevel(logrus.InfoLevel)
logger = logshim.New(l)
}
func main() {
//masterLock := MongDBBackend()
masterLock := MySQLBackend()
m := master.New(&master.MasterConfig{
StartHook: startHook,
StopHook: stopHook,
MasterLock: masterLock,
Logger: logger,
})
if err := m.Start(); err != nil {
logger.Errorf("Unable to start go-master: %v", err)
os.Exit(1)
}
logger.Infof("go-master instance started w/ id: %v", m.ID())
wg := &sync.WaitGroup{}
wg.Add(1)
wg.Wait()
}
func MongDBBackend() backend.MasterLock {
mongoBackend := mongo.New(&mongo.MongoBackendConfig{
CollectionName: "gomaster",
ConnectConfig: &mongo.MongoConnectConfig{
Hosts: []string{"localhost"},
Name: "gomastertest",
Timeout: time.Duration(1 * time.Second),
UseSSL: false,
PoolLimit: 4,
},
Logger: logger,
})
if err := mongoBackend.Connect(); err != nil {
logger.Errorf("Unable to connect to mongo: %v", err)
os.Exit(1)
}
return mongoBackend
}
func MySQLBackend() backend.MasterLock {
mysqlBackend := mysql.NewMySQLBackend(&mysql.MySQLBackendConfig{
User: "foo",
Password: "bar",
Host: "localhost",
Port: 3306,
DBName: "gomastertest",
CreateDB: true,
Logger: logger,
MaxOpenConnections: 5,
})
if err := mysqlBackend.Connect(); err != nil {
logger.Errorf("Unable to connect to MySQL: %v", err)
os.Exit(1)
}
return mysqlBackend
}
func startHook() {
logger.Info("Became master")
}
func stopHook() {
logger.Info("Lost master status")
}