mirror of
https://github.com/go-micro/go-micro.git
synced 2025-11-23 21:44:41 +02:00
133 lines
2.6 KiB
Markdown
133 lines
2.6 KiB
Markdown
|
|
---
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Plugins
|
||
|
|
|
||
|
|
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:
|
||
|
|
- Registry: `go-micro.dev/v5/registry/*` (e.g. `consul`, `etcd`, `nats`, `mdns`)
|
||
|
|
- Broker: `go-micro.dev/v5/broker/*` (e.g. `nats`, `rabbitmq`, `http`, `memory`)
|
||
|
|
- Transport: `go-micro.dev/v5/transport/*` (e.g. `nats`, default `http`)
|
||
|
|
- Store: `go-micro.dev/v5/store/*` (e.g. `postgres`, `mysql`, `nats-js-kv`, `memory`)
|
||
|
|
- Auth, Cache, etc. follow the same pattern under their respective directories.
|
||
|
|
|
||
|
|
## Registry Examples
|
||
|
|
|
||
|
|
Consul:
|
||
|
|
```go
|
||
|
|
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:
|
||
|
|
```go
|
||
|
|
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()
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Broker Examples
|
||
|
|
|
||
|
|
NATS:
|
||
|
|
```go
|
||
|
|
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:
|
||
|
|
```go
|
||
|
|
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()
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Transport Example (NATS)
|
||
|
|
```go
|
||
|
|
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()
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Store Examples
|
||
|
|
|
||
|
|
Postgres:
|
||
|
|
```go
|
||
|
|
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:
|
||
|
|
```go
|
||
|
|
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()
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Notes
|
||
|
|
- Defaults: If you don’t set an implementation, Go Micro uses sensible in-memory or local defaults (e.g., mDNS for registry, HTTP transport, memory broker/store).
|
||
|
|
- Options: Each plugin exposes constructor options to configure addresses, credentials, TLS, etc.
|
||
|
|
- Imports: Only import the plugin you need; this keeps binaries small and dependencies explicit.
|