--- layout: default --- # Transport Transport The transport layer is responsible for communication between services. ## Features - Pluggable transport implementations - Secure and efficient communication ## Implementations Supported transports include: - HTTP (default) - NATS (`go-micro.dev/v6/transport/nats`) - gRPC (`go-micro.dev/v6/transport/grpc`) - Memory (`go-micro.dev/v6/transport/memory`) ## Important: Transport vs Native gRPC The gRPC **transport** uses gRPC as an underlying communication protocol, similar to how NATS or RabbitMQ might be used. It does **not** provide native gRPC compatibility with tools like `grpcurl` or standard gRPC clients generated by `protoc`. If you need native gRPC compatibility (to use `grpcurl`, polyglot gRPC clients, etc.), you must use the gRPC **server** and **client** packages instead: ```go import ( grpcServer "go-micro.dev/v6/server/grpc" grpcClient "go-micro.dev/v6/client/grpc" ) service := micro.NewService("myservice", micro.Server(grpcServer.NewServer()), micro.Client(grpcClient.NewClient()), ) ``` See [Native gRPC Compatibility](guides/grpc-compatibility.html) for a complete guide. Plugins are scoped under `go-micro.dev/v6/transport/`. You can specify the transport when initializing your service or via env vars. ## Example Usage Here's how to use a custom transport (e.g., gRPC) in your Go Micro service: ```go package main import ( "go-micro.dev/v6" "go-micro.dev/v6/transport/grpc" ) func main() { t := grpc.NewTransport() service := micro.NewService("transport-example", micro.Transport(t), ) service.Init() service.Run() } ``` NATS transport: ```go import ( "go-micro.dev/v6" tnats "go-micro.dev/v6/transport/nats" ) func main() { t := tnats.NewTransport() service := micro.NewService("transport-example", micro.Transport(t)) service.Init() service.Run() } ``` ## Configure via environment ```bash MICRO_TRANSPORT=nats MICRO_TRANSPORT_ADDRESS=nats://127.0.0.1:4222 go run main.go ``` Common variables: - `MICRO_TRANSPORT`: selects the transport implementation (`http`, `nats`, `grpc`, `memory`). - `MICRO_TRANSPORT_ADDRESS`: comma-separated list of transport addresses.