micro--go-micro
c7657f73f4
goreleaser / goreleaser (push) Has been cancelled
* test(harness): read agent plan from the scoped store
The store-scoping change moved an agent's plan from the default table
key agent/{name}/plan to its own table (database "agent", table {name},
key "plan"). The plan-delegate harness tests still read the old key and
failed with 'not found'; read through store.Scope(mem, "agent", name)
like the agent does.
* docs: orient agents-first across README, landing, and docs overview
Lead with agents (then services and flows), surface MCP + A2A as the
interop story, and frame agents as services. Landing hero and feature
grid reordered agents-first with an A2A gateway card.
* v6: module path go-micro.dev/v6, TLS secure by default, NewService
Cut v6. Three breaking changes, bundled so the major bump is paid once:
- Module path go-micro.dev/v5 -> go-micro.dev/v6 across all imports + go.mod.
- TLS verification on by default (was off). MICRO_TLS_SECURE removed;
MICRO_TLS_INSECURE=true opts out for self-signed/dev.
- micro.NewService(name, opts...) is the canonical service constructor,
symmetric with NewAgent/NewFlow; micro.New kept as a deprecated alias;
the old name-less NewService(opts...) removed. Generators emit NewService.
Also ports the JWT auth token provider in-module (go-micro.dev/v6/auth/jwt/token
on golang-jwt/jwt/v5), dropping the v5-pinned github.com/micro/plugins/v5/auth/jwt
and the deprecated dgrijalva/jwt-go.
Docs/README/landing updated to v6 and @latest; v5->v6 migration guide added;
CHANGELOG cut as [6.0.0]. Blog posts left at their historical versions.
---------
Co-authored-by: Claude <noreply@anthropic.com>
158 行
3.4 KiB
Markdown
158 行
3.4 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/v6/registry/*` (e.g. `consul`, `etcd`, `nats`, `mdns`)
|
|
- Broker: `go-micro.dev/v6/broker/*` (e.g. `nats`, `rabbitmq`, `http`, `memory`)
|
|
- Transport: `go-micro.dev/v6/transport/*` (e.g. `nats`, default `http`)
|
|
- Server: `go-micro.dev/v6/server/*` (e.g. `grpc` for native gRPC compatibility)
|
|
- Client: `go-micro.dev/v6/client/*` (e.g. `grpc` for native gRPC compatibility)
|
|
- Store: `go-micro.dev/v6/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/v6"
|
|
"go-micro.dev/v6/registry/consul"
|
|
)
|
|
|
|
func main() {
|
|
reg := consul.NewConsulRegistry()
|
|
svc := micro.NewService(
|
|
micro.Registry(reg),
|
|
)
|
|
svc.Init()
|
|
svc.Run()
|
|
}
|
|
```
|
|
|
|
Etcd:
|
|
```go
|
|
import (
|
|
"go-micro.dev/v6"
|
|
"go-micro.dev/v6/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/v6"
|
|
bnats "go-micro.dev/v6/broker/nats"
|
|
)
|
|
|
|
func main() {
|
|
b := bnats.NewNatsBroker()
|
|
svc := micro.NewService(micro.Broker(b))
|
|
svc.Init()
|
|
svc.Run()
|
|
}
|
|
```
|
|
|
|
RabbitMQ:
|
|
```go
|
|
import (
|
|
"go-micro.dev/v6"
|
|
"go-micro.dev/v6/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/v6"
|
|
tnats "go-micro.dev/v6/transport/nats"
|
|
)
|
|
|
|
func main() {
|
|
t := tnats.NewTransport()
|
|
svc := micro.NewService(micro.Transport(t))
|
|
svc.Init()
|
|
svc.Run()
|
|
}
|
|
```
|
|
|
|
## gRPC Server/Client (Native gRPC Compatibility)
|
|
|
|
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.
|
|
|
|
```go
|
|
import (
|
|
"go-micro.dev/v6"
|
|
grpcServer "go-micro.dev/v6/server/grpc"
|
|
grpcClient "go-micro.dev/v6/client/grpc"
|
|
)
|
|
|
|
func main() {
|
|
svc := micro.NewService(
|
|
micro.Server(grpcServer.NewServer()),
|
|
micro.Client(grpcClient.NewClient()),
|
|
)
|
|
svc.Init()
|
|
svc.Run()
|
|
}
|
|
```
|
|
|
|
See [Native gRPC Compatibility](guides/grpc-compatibility.html) for a complete guide.
|
|
|
|
## Store Examples
|
|
|
|
Postgres:
|
|
```go
|
|
import (
|
|
"go-micro.dev/v6"
|
|
postgres "go-micro.dev/v6/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/v6"
|
|
natsjskv "go-micro.dev/v6/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.
|