unicok / go-plugins

Plugins for go-micro {registry, broker, codec, transport, ...}

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Go Plugins License GoDoc Travis CI Go Report Card

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.

What's here?

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

Community Contributions

Feature Description Author
Registry/Kubernetes Service discovery via the Kubernetes API @nickjackson
Registry/Zookeeper Service discovery using Zookeeper @HeavyHorst

Usage

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 the plugin

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()
}

Activate via a command line flag

go run service.go --broker=rabbitmq --registry=kubernetes --transport=nats

OR use them directly

import (
	"github.com/micro/go-plugins/registry/kubernetes"
)

func main() {
	r := kubernetes.NewRegistry() // default to using env vars for master API
}

About

Plugins for go-micro {registry, broker, codec, transport, ...}

License:Apache License 2.0


Languages

Language:Go 96.2%Language:Thrift 3.7%Language:Protocol Buffer 0.1%Language:Shell 0.0%