A repository for go-micro and go-os plugins. The go-micro framework is a pluggable architecture, here we provide additional plugins to swap out the defaults.
Check out the Micro on NATS blog post to learn more about plugins https://blog.micro.mu/2016/04/11/micro-on-nats.html.
Contributions welcome! Join the community to discuss further.
Directory | Description |
---|---|
Bot | Bot inputs and commands |
Broker | Asynchronous Pub/Sub; NATS, NSQ, RabbitMQ, Kafka |
Client | RPC Client; gRPC |
Codec | RPC Encoding; BSON, Mercury |
KV | Key-Value; Memcached, Redis |
Metrics | Instrumentation; Statsd, Telegraf, Prometheus |
Micro | Micro Toolkit Plugins |
Registry | Service Discovery; Etcd, Gossip, NATS |
Selector | Node Selection; Label, Mercury |
Server | Alternative servers; HTTP |
Sync | Locking/Leadership election; Consul, Etcd |
Trace | Distributed tracing; Zipkin |
Transport | Synchronous Request/Response; NATS, RabbitMQ |
Wrappers | Client/Server middleware; Circuit Breakers, Rate Limit |
Feature | Description | Author |
---|---|---|
Registry/Kubernetes | Service discovery via the Kubernetes API | @nickjackson |
Registry/Zookeeper | Service discovery using Zookeeper | @HeavyHorst |
Plugins can be added to go-micro in the following ways. By doing so they'll be available to set via command line args or environment variables.
import (
"github.com/micro/go-micro/cmd"
_ "github.com/micro/go-plugins/broker/rabbitmq"
_ "github.com/micro/go-plugins/registry/kubernetes"
_ "github.com/micro/go-plugins/transport/nats"
)
func main() {
cmd.Init()
}
OR use them directly
import (
"github.com/micro/go-plugins/registry/kubernetes"
)
func main() {
r := kubernetes.NewRegistry([]string{}) // default to using env vars for master API
}