diff --git a/config/cmd/cmd.go b/config/cmd/cmd.go index 7d191255..ec295423 100644 --- a/config/cmd/cmd.go +++ b/config/cmd/cmd.go @@ -343,6 +343,11 @@ var ( EnvVars: []string{"MICRO_ROUTER"}, Usage: "Router used for client requests", }, + &cli.StringFlag{ + Name: "router_address", + Usage: "Comma-separated list of router addresses", + EnvVars: []string{"MICRO_ROUTER_ADDRESS"}, + }, } DefaultBrokers = map[string]func(...broker.Option) broker.Broker{ @@ -691,9 +696,13 @@ func (c *cmd) Before(ctx *cli.Context) error { // Set the router, this must happen before the rest of the server as it'll route server requests // such as go.micro.config if no address is specified routerOpts := []router.Option{ + srvRouter.Client(microClient), router.Network(ctx.String("service_namespace")), router.Registry(*c.opts.Registry), - srvRouter.Client(microClient), + router.Id((*c.opts.Server).Options().Id), + } + if len(ctx.String("router_address")) > 0 { + routerOpts = append(routerOpts, router.Address(ctx.String("router_address"))) } if name := ctx.String("router"); len(name) > 0 && (*c.opts.Router).String() != name { r, ok := c.opts.Routers[name] @@ -701,6 +710,11 @@ func (c *cmd) Before(ctx *cli.Context) error { return fmt.Errorf("Router %s not found", name) } + // close the default router before replacing it + if err := (*c.opts.Router).Close(); err != nil { + logger.Fatalf("Error closing default router: %s", name) + } + *c.opts.Router = r(routerOpts...) // todo: set the router in the client // clientOpts = append(clientOpts, client.Router(*c.opts.Router)) diff --git a/options.go b/options.go index e807e496..edf879a6 100644 --- a/options.go +++ b/options.go @@ -14,6 +14,7 @@ import ( "github.com/micro/go-micro/v2/debug/profile" "github.com/micro/go-micro/v2/debug/trace" "github.com/micro/go-micro/v2/registry" + "github.com/micro/go-micro/v2/router" "github.com/micro/go-micro/v2/runtime" "github.com/micro/go-micro/v2/server" "github.com/micro/go-micro/v2/store" @@ -30,6 +31,7 @@ type Options struct { Server server.Server Store store.Store Registry registry.Registry + Router router.Router Runtime runtime.Runtime Transport transport.Transport Profile profile.Profile @@ -57,6 +59,7 @@ func newOptions(opts ...Option) Options { Server: server.DefaultServer, Store: store.DefaultStore, Registry: registry.DefaultRegistry, + Router: router.DefaultRouter, Runtime: runtime.DefaultRuntime, Transport: transport.DefaultTransport, Context: context.Background(), diff --git a/router/router.go b/router/router.go index e379b188..72ecd3b9 100644 --- a/router/router.go +++ b/router/router.go @@ -7,7 +7,7 @@ import ( var ( // DefaultAddress is default router address - DefaultAddress = ":9093" + DefaultAddress = ":8084" // DefaultName is default router service name DefaultName = "go.micro.router" // DefaultNetwork is default micro network