github.com/wfusion/gofusion@v1.1.14/common/infra/watermill/message/router/plugin/signals.go (about) 1 package plugin 2 3 import ( 4 "fmt" 5 "os" 6 "os/signal" 7 "syscall" 8 9 "github.com/wfusion/gofusion/common/infra/watermill/message" 10 ) 11 12 // SignalsHandler is a plugin that kills the router after SIGINT or SIGTERM is sent to the process. 13 func SignalsHandler(r *message.Router) error { 14 sigs := make(chan os.Signal, 1) 15 signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) 16 17 go func() { 18 sig := <-sigs 19 r.Logger().Info(fmt.Sprintf("[Common] watermill received %s signal, closing\n", sig), nil) 20 21 err := r.Close() 22 if err != nil { 23 r.Logger().Error("[Common] watermill router close failed", err, nil) 24 } 25 }() 26 return nil 27 }