Przeglądaj źródła

[add] SIGINT 핸들링 추가

master
kidjung 4 lat temu
rodzic
commit
b8d5bb1a89

+ 31
- 11
src/broker/modules/init.go Wyświetl plik

@@ -4,14 +4,14 @@ import (
4 4
 	"encoding/json"
5 5
 	"errors"
6 6
 	"fmt"
7
-	l4g "github.com/jeanphorn/log4go"
8 7
 	"net"
9 8
 	"net/rpc"
9
+	"os"
10
+	"os/signal"
10 11
 	"strconv"
12
+	"syscall"
11 13
 )
12 14
 
13
-// TODO: RM 처리와 init.go 전반적으로 DI 이용하여 구현 RM 키등록 부분 구현 예정
14
-
15 15
 type Moscato struct {
16 16
 	queue               MsgQueue
17 17
 	SendQueue           chan myType
@@ -68,7 +68,7 @@ func (receiver Receiver) MmReceive(args Args, reply *Reply) error { //
68 68
 
69 69
 			}
70 70
 		}()
71
-		reply.CompleteLog = "received"
71
+		reply.CompleteLog = "KSM received"
72 72
 	case PM:
73 73
 		var msg PublishMsg
74 74
 		err := json.Unmarshal(args.JsonMsg, &msg)
@@ -143,22 +143,24 @@ func (moscato *Moscato) Receive(msg MsgUnit) (MsgUnit, error) {
143 143
 
144 144
 	case PM: //Publish msg
145 145
 		//log.Println("PM received")
146
-		logger.Info("PM received")
146
+		fromNodeName, _ := moscato.MicroServiceManager.GetIpaddr(msg.(PublishMsg).From)
147
+		logger.Info("PM received from:[" + fromNodeName + "]")
147 148
 		moscato.queue.push(moscato.preProcessMsg(msg))
148 149
 
149 150
 	case SM: //Subscription msg
150 151
 		//log.Println("SM received")
151
-		logger.Info("SM received")
152
+		fromNodeName, _ := moscato.MicroServiceManager.GetIpaddr(msg.(SubscriptionMsg).From)
153
+		logger.Info("SM received from:[" + fromNodeName + "]")
152 154
 		err := moscato.SubscriptionManager.addSubscription(moscato.preProcessMsg(msg))
153 155
 		if err != nil {
154
-			println(err)
156
+			logger.Warn(err.Error())
155 157
 			//return nil, err
156 158
 		}
157 159
 
158 160
 	case RM: //Register msg
159
-		logger.Info("RM received")
160 161
 		var newMsg RegisterMsg
161 162
 		newMsg = msg.(RegisterMsg)
163
+		logger.Info("RM received from:[" + newMsg.From + "]")
162 164
 
163 165
 		newNode := MSNode{newMsg.From, newMsg.From}
164 166
 		resultAddNode := moscato.MicroServiceManager.AddMicroservice(newNode)
@@ -179,6 +181,8 @@ func (moscato *Moscato) Receive(msg MsgUnit) (MsgUnit, error) {
179 181
 		go moscato.Send2MS(addr, newMsg)
180 182
 
181 183
 	case WM: //Withdraw msg
184
+		fromNodeName, _ := moscato.MicroServiceManager.GetIpaddr(msg.(RegisterMsg).From)
185
+		logger.Info("WM received from:[" + fromNodeName + "]")
182 186
 		//ip := msg.(WithdrawMsg).From
183 187
 		//sublist := moscato.SubscriptionManager.ip2sub[ip]
184 188
 		//fmt.Println("prev list = ", sublist)
@@ -286,6 +290,21 @@ func (moscato *Moscato) Run() {
286 290
 	config := AppConfig{moscato}
287 291
 	config.config()
288 292
 
293
+	sigs := make(chan os.Signal, 1)
294
+	done := make(chan bool, 1)
295
+
296
+	signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
297
+
298
+	go func() {
299
+		sig := <-sigs
300
+		//withDraw(message, client)
301
+		//fmt.Println(sig)
302
+		_ = sig
303
+		done <- true
304
+		logger.Info("terminate Moscato Message Middleware")
305
+		os.Exit(0)
306
+	}()
307
+
289 308
 	//모스카토 구조체 변수 초기화
290 309
 	receiver := Receiver{moscato: moscato}
291 310
 	err := moscato.queue.queue_init()
@@ -318,10 +337,12 @@ func (moscato *Moscato) Run() {
318 337
 	go Listen()
319 338
 	logger.Info("initializing complete")
320 339
 
321
-	fmt.Scanln()
340
+	<-done
322 341
 }
323 342
 
324 343
 func Listen() {
344
+	logger := NewMyLogger()
345
+	defer logger.Sync()
325 346
 	/*
326 347
 		MS→MM일때 ⇒ port : 8160으로 열기
327 348
 
@@ -331,8 +352,7 @@ func Listen() {
331 352
 	l, err1 := net.Listen("tcp", ":8160")
332 353
 
333 354
 	if err1 != nil {
334
-		//log.Fatal(fmt.Sprintf("Unable to listen on given port: %s", err1))
335
-		l4g.LOGGER("Test").Critical("Unable to listen on given port: %s", err1)
355
+		logger.Fatal("Unable to listen on given port: " + err1.Error())
336 356
 	}
337 357
 	defer l.Close()
338 358
 

+ 3
- 3
src/broker/modules/logConfig.go Wyświetl plik

@@ -12,9 +12,9 @@ func MyEncoderConfig() zapcore.EncoderConfig {
12 12
 		LevelKey: "L",
13 13
 		NameKey:  "N",
14 14
 		//CallerKey:      "C",
15
-		FunctionKey:    zapcore.OmitKey,
16
-		MessageKey:     "M",
17
-		StacktraceKey:  "S",
15
+		FunctionKey: zapcore.OmitKey,
16
+		MessageKey:  "M",
17
+		//StacktraceKey:  "S",
18 18
 		LineEnding:     zapcore.DefaultLineEnding,
19 19
 		EncodeLevel:    zapcore.CapitalColorLevelEncoder,
20 20
 		EncodeTime:     zapcore.ISO8601TimeEncoder,

+ 2
- 2
src/broker/modules/manage.go Wyświetl plik

@@ -30,7 +30,7 @@ type MStable struct {
30 30
 //MStable 생성자
31 31
 func NewMStable() *MStable {
32 32
 	logger := NewMyLogger()
33
-	logger.Sync()
33
+	defer logger.Sync()
34 34
 
35 35
 	defer logger.Debug("node manager setting complete.")
36 36
 	return &MStable{NodeTable: make(map[string]MSNode)}
@@ -65,7 +65,7 @@ func (manager *MStable) AddMicroservice(node MSNode) bool {
65 65
 //MS삭제
66 66
 func (manager *MStable) RemoveMicroservice(nodeName string) bool {
67 67
 	logger := NewMyLogger()
68
-	logger.Sync()
68
+	defer logger.Sync()
69 69
 	//삭제 전 존재여부 확인
70 70
 	_, exists := manager.NodeTable[nodeName] //해당 이름을 가진 Node가 있는지 검색
71 71
 

+ 1
- 1
src/broker/modules/secure.go Wyświetl plik

@@ -88,7 +88,7 @@ func (sc Security) ReEncPubMsg(fromPubMsg PublishMsg, nodeName string) PublishMs
88 88
 //Key제거 함수
89 89
 func (sc *Security) RemoveSecureKey(nodeName string) bool {
90 90
 	logger := NewMyLogger()
91
-	logger.Sync()
91
+	defer logger.Sync()
92 92
 	//삭제 전 존재여부 확인
93 93
 	_, exists := sc.KeyMap[nodeName]
94 94
 

Ładowanie…
Anuluj
Zapisz