micro.newService()中newOptions
func newOptions(opts ...Option) Options { opt := Options{ Auth: auth.DefaultAuth, Broker: broker.DefaultBroker, Cmd: cmd.DefaultCmd, Config: config.DefaultConfig, Client: client.DefaultClient, Server: server.DefaultServer, Store: store.DefaultStore, Registry: registry.DefaultRegistry, Router: router.DefaultRouter, Runtime: runtime.DefaultRuntime, Transport: transport.DefaultTransport, Context: context.Background(), Signal: true, } for _, o := range opts { o(&opt) } return opt}
初始化了一堆根底设置,来看看Transporttransport.DefaultTransport,
在transport/transport.go中的DefaultTransport Transport = newHTTPTransport()
func NewTransport(opts ...Option) Transport { return newHTTPTransport(opts...)}func newHTTPTransport(opts ...Option) *httpTransport { var options Options for _, o := range opts { o(&options) } return &httpTransport{opts: options}}
这里就初始化并设置options,返回了一个httpTransport{}
手动指定其余的Transport,两种形式
- micro.NewService()中传入
micro.Transport(grpc.NewTransport()),
, 即可应用grpc Transport - plugins.go中import退出
"github.com/micro/go-plugins/transport/grpc/v2"