internal/website/docs/plugins.md
Plugins are scoped under each interface directory within this repository. To use a plugin, import it directly from the corresponding interface subpackage and pass it to your service via options.
Common interfaces and locations:
go-micro.dev/v5/registry/* (e.g. consul, etcd, nats, mdns)go-micro.dev/v5/broker/* (e.g. nats, rabbitmq, http, memory)go-micro.dev/v5/transport/* (e.g. nats, default http)go-micro.dev/v5/server/* (e.g. grpc for native gRPC compatibility)go-micro.dev/v5/client/* (e.g. grpc for native gRPC compatibility)go-micro.dev/v5/store/* (e.g. postgres, mysql, nats-js-kv, memory)Consul:
import (
"go-micro.dev/v5"
"go-micro.dev/v5/registry/consul"
)
func main() {
reg := consul.NewConsulRegistry()
svc := micro.NewService(
micro.Registry(reg),
)
svc.Init()
svc.Run()
}
Etcd:
import (
"go-micro.dev/v5"
"go-micro.dev/v5/registry/etcd"
)
func main() {
reg := etcd.NewRegistry()
svc := micro.NewService(micro.Registry(reg))
svc.Init()
svc.Run()
}
NATS:
import (
"go-micro.dev/v5"
bnats "go-micro.dev/v5/broker/nats"
)
func main() {
b := bnats.NewNatsBroker()
svc := micro.NewService(micro.Broker(b))
svc.Init()
svc.Run()
}
RabbitMQ:
import (
"go-micro.dev/v5"
"go-micro.dev/v5/broker/rabbitmq"
)
func main() {
b := rabbitmq.NewBroker()
svc := micro.NewService(micro.Broker(b))
svc.Init()
svc.Run()
}
import (
"go-micro.dev/v5"
tnats "go-micro.dev/v5/transport/nats"
)
func main() {
t := tnats.NewTransport()
svc := micro.NewService(micro.Transport(t))
svc.Init()
svc.Run()
}
For native gRPC compatibility (required for grpcurl, polyglot gRPC clients, etc.), use the gRPC server and client plugins. Note: This is different from the gRPC transport.
import (
"go-micro.dev/v5"
grpcServer "go-micro.dev/v5/server/grpc"
grpcClient "go-micro.dev/v5/client/grpc"
)
func main() {
svc := micro.NewService(
micro.Server(grpcServer.NewServer()),
micro.Client(grpcClient.NewClient()),
)
svc.Init()
svc.Run()
}
See Native gRPC Compatibility for a complete guide.
Postgres:
import (
"go-micro.dev/v5"
postgres "go-micro.dev/v5/store/postgres"
)
func main() {
st := postgres.NewStore()
svc := micro.NewService(micro.Store(st))
svc.Init()
svc.Run()
}
NATS JetStream KV:
import (
"go-micro.dev/v5"
natsjskv "go-micro.dev/v5/store/nats-js-kv"
)
func main() {
st := natsjskv.NewStore()
svc := micro.NewService(micro.Store(st))
svc.Init()
svc.Run()
}