wip
This commit is contained in:
parent
04ebecd647
commit
fbcad1a889
@ -26,10 +26,12 @@ func init() {
|
|||||||
|
|
||||||
sapCmd.Flags().String("db-username", "postgres", "database username")
|
sapCmd.Flags().String("db-username", "postgres", "database username")
|
||||||
sapCmd.Flags().String("db-password", "Me8140@01", "database user password")
|
sapCmd.Flags().String("db-password", "Me8140@01", "database user password")
|
||||||
sapCmd.Flags().String("db-host", "10.136.49.104", "database host address")
|
sapCmd.Flags().String("db-host", "db", "database host address")
|
||||||
sapCmd.Flags().Int("db-port", 5432, "database tcp port")
|
sapCmd.Flags().Int("db-port", 5432, "database tcp port")
|
||||||
sapCmd.Flags().String("db-name", "falcon", "database user password")
|
sapCmd.Flags().String("db-name", "falcon", "database user password")
|
||||||
sapCmd.Flags().String("nats-host", "10.136.49.95", "nats.io broker host address")
|
sapCmd.Flags().String("nats-host", "nats", "nats.io broker host address")
|
||||||
sapCmd.Flags().Int("nats-port", 4222, "nats.io broker tcp port")
|
sapCmd.Flags().Int("nats-port", 4222, "nats.io broker tcp port")
|
||||||
|
sapCmd.Flags().String("nsq-host", "nats", "NSQ queue system host address")
|
||||||
|
sapCmd.Flags().Int("nsq-port", 4222, "NSQ queue system tcp port")
|
||||||
sapCmd.Flags().String("log-level", "debug", "log level trace")
|
sapCmd.Flags().String("log-level", "debug", "log level trace")
|
||||||
}
|
}
|
||||||
|
112
sap/app/app.go
112
sap/app/app.go
@ -1,5 +1,113 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import "github.com/spf13/cobra"
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
func Run(cmd *cobra.Command, args []string) {}
|
cml04eventer "git.espin.casa/albert/cml04-eventer"
|
||||||
|
"git.espin.casa/albert/cml04-falcon-system/internal/storage"
|
||||||
|
"git.espin.casa/albert/logger"
|
||||||
|
"github.com/nats-io/nats.go"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Run(cmd *cobra.Command, args []string) {
|
||||||
|
// read flags
|
||||||
|
logLevel, _ := cmd.Flags().GetString("log-level")
|
||||||
|
dbUser, _ := cmd.Flags().GetString("db-username")
|
||||||
|
dbPass, _ := cmd.Flags().GetString("db-password")
|
||||||
|
dbHost, _ := cmd.Flags().GetString("db-host")
|
||||||
|
dbPort, _ := cmd.Flags().GetInt("db-port")
|
||||||
|
dbName, _ := cmd.Flags().GetString("db-name")
|
||||||
|
natsHost, _ := cmd.Flags().GetString("nats-host")
|
||||||
|
natsPort, _ := cmd.Flags().GetInt("nats-port")
|
||||||
|
nsqHost, _ := cmd.Flags().GetString("nsq-host")
|
||||||
|
nsqPort, _ := cmd.Flags().GetInt("nsq-port")
|
||||||
|
// setup logger
|
||||||
|
log := logger.New(os.Stdout, logLevel)
|
||||||
|
// log fields
|
||||||
|
logFields := logger.LogFields{
|
||||||
|
"nsq_host": nsqHost,
|
||||||
|
"nsq_port": nsqPort,
|
||||||
|
"nats_host": natsHost,
|
||||||
|
"nats_port": natsPort,
|
||||||
|
"log_level": logLevel,
|
||||||
|
}
|
||||||
|
// NATS connect
|
||||||
|
nc, err := nats.Connect(fmt.Sprintf("nats://%s:%d", natsHost, natsPort))
|
||||||
|
if err != nil {
|
||||||
|
log.Error("create nats connection failed", err, logFields)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// on close disconnects
|
||||||
|
defer nc.Close()
|
||||||
|
// create storager
|
||||||
|
storage, err := storage.New(&storage.DBConfig{
|
||||||
|
Username: dbUser,
|
||||||
|
Password: dbPass,
|
||||||
|
Host: dbHost,
|
||||||
|
Port: dbPort,
|
||||||
|
Name: dbName,
|
||||||
|
})
|
||||||
|
// handle error
|
||||||
|
if err != nil {
|
||||||
|
log.Error("create storage failed", err, logFields)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// create nsq subscriber
|
||||||
|
subscriber, err := cml04eventer.NewSubscriber(&cml04eventer.SubscriberConfig{
|
||||||
|
NSQAddress: nsqHost,
|
||||||
|
NSQPort: nsqPort,
|
||||||
|
Unmarshaler: cml04eventer.JSONMarshaler{},
|
||||||
|
Channel: "cml04-falcon-system",
|
||||||
|
}, log)
|
||||||
|
// handle error
|
||||||
|
if err != nil {
|
||||||
|
log.Error("create nsq subscriber failed", err, logFields)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// on exit close subscriber
|
||||||
|
defer subscriber.Close()
|
||||||
|
// create context with cancel
|
||||||
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
defer cancel()
|
||||||
|
eventChan, err := subscriber.SubscribeEvent(ctx, "FALCON-IN")
|
||||||
|
// handle error
|
||||||
|
if err != nil {
|
||||||
|
log.Error("nsq subscription failed", err, logFields)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
go func() {
|
||||||
|
for event := range eventChan {
|
||||||
|
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
// info banner
|
||||||
|
log.Info("started cml04-falcon-sap service", logFields)
|
||||||
|
// wait signal to finish
|
||||||
|
signal := WaitSignal()
|
||||||
|
log.Info("signal received", logFields.Add(logger.LogFields{
|
||||||
|
"signal": signal,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
// WaitSignal catching exit signal
|
||||||
|
func WaitSignal() os.Signal {
|
||||||
|
ch := make(chan os.Signal, 2)
|
||||||
|
signal.Notify(
|
||||||
|
ch,
|
||||||
|
syscall.SIGINT,
|
||||||
|
syscall.SIGQUIT,
|
||||||
|
syscall.SIGTERM,
|
||||||
|
)
|
||||||
|
for {
|
||||||
|
sig := <-ch
|
||||||
|
switch sig {
|
||||||
|
case syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM:
|
||||||
|
return sig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user