router: add to service options; add dns and static implementations (#1733)

* config/cmd: add router to service options

* router/service: use micro client
This commit is contained in:
ben-toogood
2020-06-24 11:46:51 +01:00
committed by GitHub
parent c940961574
commit a2550820d3
8 changed files with 319 additions and 15 deletions

22
router/service/options.go Normal file
View File

@@ -0,0 +1,22 @@
package service
import (
"context"
"github.com/micro/go-micro/v2/client"
"github.com/micro/go-micro/v2/router"
)
type clientKey struct{}
// Client to call router service
func Client(c client.Client) router.Option {
return func(o *router.Options) {
if o.Context == nil {
o.Context = context.WithValue(context.Background(), clientKey{}, c)
return
}
o.Context = context.WithValue(o.Context, clientKey{}, c)
}
}

View File

@@ -36,9 +36,10 @@ func NewRouter(opts ...router.Option) router.Router {
// NOTE: might need some client opts here
cli := client.DefaultClient
// set options client
if options.Client != nil {
cli = options.Client
// get options client from the context. We set this in the context to prevent an import loop, as
// the client depends on the router
if c, ok := options.Context.Value(clientKey{}).(client.Client); ok {
cli = c
}
// NOTE: should we have Client/Service option in router.Options?