2016-11-17 21:03:54 +00:00
|
|
|
package consul
|
|
|
|
|
|
|
|
import (
|
2018-03-03 11:53:52 +00:00
|
|
|
"context"
|
2018-03-19 20:34:56 +07:00
|
|
|
"time"
|
2018-03-03 11:53:52 +00:00
|
|
|
|
2016-11-17 21:03:54 +00:00
|
|
|
consul "github.com/hashicorp/consul/api"
|
|
|
|
"github.com/micro/go-micro/registry"
|
|
|
|
)
|
|
|
|
|
|
|
|
func Config(c *consul.Config) registry.Option {
|
|
|
|
return func(o *registry.Options) {
|
|
|
|
if o.Context == nil {
|
|
|
|
o.Context = context.Background()
|
|
|
|
}
|
|
|
|
o.Context = context.WithValue(o.Context, "consul_config", c)
|
|
|
|
}
|
|
|
|
}
|
2018-03-19 20:34:56 +07:00
|
|
|
|
|
|
|
//
|
2018-03-21 18:17:56 +07:00
|
|
|
// TCPCheck will tell the service provider to check the service address
|
2018-03-19 20:34:56 +07:00
|
|
|
// and port every `t` interval. It will enabled only if `t` is greater than 0.
|
|
|
|
// See `TCP + Interval` for more information [1].
|
|
|
|
//
|
|
|
|
// [1] https://www.consul.io/docs/agent/checks.html
|
|
|
|
//
|
2018-03-21 18:17:56 +07:00
|
|
|
func TCPCheck(t time.Duration) registry.Option {
|
2018-03-19 20:34:56 +07:00
|
|
|
return func(o *registry.Options) {
|
|
|
|
if t <= time.Duration(0) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if o.Context == nil {
|
|
|
|
o.Context = context.Background()
|
|
|
|
}
|
2018-03-21 21:57:04 +07:00
|
|
|
o.Context = context.WithValue(o.Context, "consul_tcp_check", t)
|
2018-03-19 20:34:56 +07:00
|
|
|
}
|
|
|
|
}
|