Ver código fonte

[add] SIGINT 핸들링 추가

master
kidjung 4 anos atrás
pai
commit
b8d5bb1a89

+ 31
- 11
src/broker/modules/init.go Ver arquivo

4
 	"encoding/json"
4
 	"encoding/json"
5
 	"errors"
5
 	"errors"
6
 	"fmt"
6
 	"fmt"
7
-	l4g "github.com/jeanphorn/log4go"
8
 	"net"
7
 	"net"
9
 	"net/rpc"
8
 	"net/rpc"
9
+	"os"
10
+	"os/signal"
10
 	"strconv"
11
 	"strconv"
12
+	"syscall"
11
 )
13
 )
12
 
14
 
13
-// TODO: RM 처리와 init.go 전반적으로 DI 이용하여 구현 RM 키등록 부분 구현 예정
14
-
15
 type Moscato struct {
15
 type Moscato struct {
16
 	queue               MsgQueue
16
 	queue               MsgQueue
17
 	SendQueue           chan myType
17
 	SendQueue           chan myType
68
 
68
 
69
 			}
69
 			}
70
 		}()
70
 		}()
71
-		reply.CompleteLog = "received"
71
+		reply.CompleteLog = "KSM received"
72
 	case PM:
72
 	case PM:
73
 		var msg PublishMsg
73
 		var msg PublishMsg
74
 		err := json.Unmarshal(args.JsonMsg, &msg)
74
 		err := json.Unmarshal(args.JsonMsg, &msg)
143
 
143
 
144
 	case PM: //Publish msg
144
 	case PM: //Publish msg
145
 		//log.Println("PM received")
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
 		moscato.queue.push(moscato.preProcessMsg(msg))
148
 		moscato.queue.push(moscato.preProcessMsg(msg))
148
 
149
 
149
 	case SM: //Subscription msg
150
 	case SM: //Subscription msg
150
 		//log.Println("SM received")
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
 		err := moscato.SubscriptionManager.addSubscription(moscato.preProcessMsg(msg))
154
 		err := moscato.SubscriptionManager.addSubscription(moscato.preProcessMsg(msg))
153
 		if err != nil {
155
 		if err != nil {
154
-			println(err)
156
+			logger.Warn(err.Error())
155
 			//return nil, err
157
 			//return nil, err
156
 		}
158
 		}
157
 
159
 
158
 	case RM: //Register msg
160
 	case RM: //Register msg
159
-		logger.Info("RM received")
160
 		var newMsg RegisterMsg
161
 		var newMsg RegisterMsg
161
 		newMsg = msg.(RegisterMsg)
162
 		newMsg = msg.(RegisterMsg)
163
+		logger.Info("RM received from:[" + newMsg.From + "]")
162
 
164
 
163
 		newNode := MSNode{newMsg.From, newMsg.From}
165
 		newNode := MSNode{newMsg.From, newMsg.From}
164
 		resultAddNode := moscato.MicroServiceManager.AddMicroservice(newNode)
166
 		resultAddNode := moscato.MicroServiceManager.AddMicroservice(newNode)
179
 		go moscato.Send2MS(addr, newMsg)
181
 		go moscato.Send2MS(addr, newMsg)
180
 
182
 
181
 	case WM: //Withdraw msg
183
 	case WM: //Withdraw msg
184
+		fromNodeName, _ := moscato.MicroServiceManager.GetIpaddr(msg.(RegisterMsg).From)
185
+		logger.Info("WM received from:[" + fromNodeName + "]")
182
 		//ip := msg.(WithdrawMsg).From
186
 		//ip := msg.(WithdrawMsg).From
183
 		//sublist := moscato.SubscriptionManager.ip2sub[ip]
187
 		//sublist := moscato.SubscriptionManager.ip2sub[ip]
184
 		//fmt.Println("prev list = ", sublist)
188
 		//fmt.Println("prev list = ", sublist)
286
 	config := AppConfig{moscato}
290
 	config := AppConfig{moscato}
287
 	config.config()
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
 	receiver := Receiver{moscato: moscato}
309
 	receiver := Receiver{moscato: moscato}
291
 	err := moscato.queue.queue_init()
310
 	err := moscato.queue.queue_init()
318
 	go Listen()
337
 	go Listen()
319
 	logger.Info("initializing complete")
338
 	logger.Info("initializing complete")
320
 
339
 
321
-	fmt.Scanln()
340
+	<-done
322
 }
341
 }
323
 
342
 
324
 func Listen() {
343
 func Listen() {
344
+	logger := NewMyLogger()
345
+	defer logger.Sync()
325
 	/*
346
 	/*
326
 		MS→MM일때 ⇒ port : 8160으로 열기
347
 		MS→MM일때 ⇒ port : 8160으로 열기
327
 
348
 
331
 	l, err1 := net.Listen("tcp", ":8160")
352
 	l, err1 := net.Listen("tcp", ":8160")
332
 
353
 
333
 	if err1 != nil {
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
 	defer l.Close()
357
 	defer l.Close()
338
 
358
 

+ 3
- 3
src/broker/modules/logConfig.go Ver arquivo

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

+ 2
- 2
src/broker/modules/manage.go Ver arquivo

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

+ 1
- 1
src/broker/modules/secure.go Ver arquivo

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

Carregando…
Cancelar
Salvar