2025-05-21 13:48:03 +01:00
|
|
|
---
|
|
|
|
|
layout: default
|
|
|
|
|
---
|
|
|
|
|
|
2025-05-21 12:03:24 +00:00
|
|
|
# Transport
|
|
|
|
|
|
|
|
|
|
The transport layer is responsible for communication between services.
|
|
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
- Pluggable transport implementations
|
|
|
|
|
- Secure and efficient communication
|
|
|
|
|
|
|
|
|
|
## Implementations
|
|
|
|
|
Supported transports include:
|
2025-11-13 18:11:29 +00:00
|
|
|
- HTTP (default)
|
|
|
|
|
- NATS (`go-micro.dev/v5/transport/nats`)
|
|
|
|
|
- gRPC (`go-micro.dev/v5/transport/grpc`)
|
|
|
|
|
- Memory (`go-micro.dev/v5/transport/memory`)
|
2025-05-21 12:03:24 +00:00
|
|
|
|
2025-11-13 18:11:29 +00:00
|
|
|
Plugins are scoped under `go-micro.dev/v5/transport/<plugin>`.
|
|
|
|
|
|
|
|
|
|
You can specify the transport when initializing your service or via env vars.
|
2025-05-21 12:03:24 +00:00
|
|
|
|
|
|
|
|
## 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/v5"
|
|
|
|
|
"go-micro.dev/v5/transport/grpc"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
t := grpc.NewTransport()
|
|
|
|
|
service := micro.NewService(
|
|
|
|
|
micro.Transport(t),
|
|
|
|
|
)
|
|
|
|
|
service.Init()
|
|
|
|
|
service.Run()
|
|
|
|
|
}
|
|
|
|
|
```
|
2025-11-13 18:11:29 +00:00
|
|
|
|
|
|
|
|
NATS transport:
|
|
|
|
|
```go
|
|
|
|
|
import (
|
|
|
|
|
"go-micro.dev/v5"
|
|
|
|
|
tnats "go-micro.dev/v5/transport/nats"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
t := tnats.NewTransport()
|
|
|
|
|
service := micro.NewService(micro.Transport(t))
|
|
|
|
|
service.Init()
|
|
|
|
|
service.Run()
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Configure via environment
|
|
|
|
|
|
2025-11-13 18:17:45 +00:00
|
|
|
```bash
|
|
|
|
|
MICRO_TRANSPORT=nats MICRO_TRANSPORT_ADDRESS=nats://127.0.0.1:4222 go run main.go
|
2025-11-13 18:11:29 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Common variables:
|
|
|
|
|
- `MICRO_TRANSPORT`: selects the transport implementation (`http`, `nats`, `grpc`, `memory`).
|
|
|
|
|
- `MICRO_TRANSPORT_ADDRESS`: comma-separated list of transport addresses.
|