2016-11-18 00:03:54 +03:00
|
|
|
package consul
|
|
|
|
|
|
|
|
import (
|
2018-03-03 14:53:52 +03:00
|
|
|
"context"
|
2018-03-19 16:34:56 +03:00
|
|
|
"time"
|
2018-03-03 14:53:52 +03:00
|
|
|
|
2016-11-18 00:03:54 +03:00
|
|
|
consul "github.com/hashicorp/consul/api"
|
|
|
|
"github.com/micro/go-micro/registry"
|
|
|
|
)
|
|
|
|
|
2018-08-06 19:12:34 +03:00
|
|
|
// Connect specifies services should be registered as Consul Connect services
|
|
|
|
func Connect() registry.Option {
|
|
|
|
return func(o *registry.Options) {
|
|
|
|
if o.Context == nil {
|
|
|
|
o.Context = context.Background()
|
|
|
|
}
|
|
|
|
o.Context = context.WithValue(o.Context, "consul_connect", true)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-11-18 00:03:54 +03:00
|
|
|
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 16:34:56 +03:00
|
|
|
|
|
|
|
//
|
2018-03-21 14:17:56 +03:00
|
|
|
// TCPCheck will tell the service provider to check the service address
|
2018-03-19 16:34:56 +03: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 14:17:56 +03:00
|
|
|
func TCPCheck(t time.Duration) registry.Option {
|
2018-03-19 16:34:56 +03:00
|
|
|
return func(o *registry.Options) {
|
|
|
|
if t <= time.Duration(0) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if o.Context == nil {
|
|
|
|
o.Context = context.Background()
|
|
|
|
}
|
2018-03-21 17:57:04 +03:00
|
|
|
o.Context = context.WithValue(o.Context, "consul_tcp_check", t)
|
2018-03-19 16:34:56 +03:00
|
|
|
}
|
|
|
|
}
|