Skip to content

Instantly share code, notes, and snippets.

@m1kc
Created November 2, 2016 08:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save m1kc/0d74a3dcee614cd3a7447a110f9b2ecc to your computer and use it in GitHub Desktop.
Save m1kc/0d74a3dcee614cd3a7447a110f9b2ecc to your computer and use it in GitHub Desktop.
If your go-micro options just don't seem to work, try this approach.
import (
"time"
"github.com/micro/go-micro"
_ "github.com/micro/go-micro/broker"
"github.com/micro/go-micro/server"
brokerNats "github.com/micro/go-plugins/broker/nats"
transportNats "github.com/micro/go-plugins/transport/nats"
)
func createService(name string) (ret micro.Service) {
ttl := time.Second * 30
t := transportNats.NewTransport()
b := brokerNats.NewBroker()
opts := []micro.Option{}
opts = append(opts, micro.Name(name))
opts = append(opts, micro.RegisterTTL(ttl))
opts = append(opts, micro.RegisterInterval(time.Second*10))
opts = append(opts, micro.Transport(t))
opts = append(opts, micro.Broker(b))
opts = append(opts, micro.Server(server.NewServer(
server.Name(name),
server.Transport(t),
server.Broker(b),
server.RegisterTTL(ttl),
// In case of HTTP: server.Address(":"+fmt.Sprint(port)),
)))
ret = micro.NewService(opts...)
ret.Init()
return
}
service := createService("mydomain.myservice.whatever")
// register handlers
proto.RegisterListerHandler(service.Server(), &CallListerHandler{})
proto.RegisterStatusListerHandler(service.Server(), &StatusListerHandler{})
// run
if err := service.Run(); err != nil {
log.Fatal(err)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment