diff --git a/cmd/cmd.go b/cmd/cmd.go index abf93453..a7fc3eb5 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -78,6 +78,16 @@ var ( EnvVar: "MICRO_CLIENT_POOL_TTL", Usage: "Sets the client connection pool ttl. e.g 500ms, 5s, 1m. Default: 1m", }, + cli.IntFlag{ + Name: "register_ttl", + EnvVar: "MICRO_REGISTER_TTL", + Usage: "Register TTL in seconds", + }, + cli.IntFlag{ + Name: "register_interval", + EnvVar: "MICRO_REGISTER_INTERVAL", + Usage: "Register interval in seconds", + }, cli.StringFlag{ Name: "server_name", EnvVar: "MICRO_SERVER_NAME", @@ -370,6 +380,10 @@ func (c *cmd) Before(ctx *cli.Context) error { serverOpts = append(serverOpts, server.Advertise(ctx.String("server_advertise"))) } + if ttl := time.Duration(ctx.GlobalInt("register_ttl")); ttl > 0 { + serverOpts = append(serverOpts, server.RegisterTTL(ttl*time.Second)) + } + // client opts if r := ctx.Int("client_retries"); r > 0 { clientOpts = append(clientOpts, client.Retries(r)) diff --git a/service.go b/service.go index 4872b1b8..e884283d 100644 --- a/service.go +++ b/service.go @@ -7,7 +7,8 @@ import ( "syscall" "time" - log "github.com/micro/go-log" + "github.com/micro/cli" + "github.com/micro/go-log" "github.com/micro/go-micro/client" "github.com/micro/go-micro/cmd" "github.com/micro/go-micro/metadata" @@ -66,6 +67,20 @@ func (s *service) Init(opts ...Option) { } s.once.Do(func() { + // save user action + action := s.opts.Cmd.App().Action + + // set service action + s.opts.Cmd.App().Action = func(c *cli.Context) { + // set register interval + if i := time.Duration(c.GlobalInt("register_interval")); i > 0 { + s.opts.RegisterInterval = i * time.Second + } + + // user action + action(c) + } + // Initialise the command flags, overriding new service _ = s.opts.Cmd.Init( cmd.Broker(&s.opts.Broker),