Further consolidate the libraries
This commit is contained in:
		
							
								
								
									
										77
									
								
								proxy/control/consul/consul.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								proxy/control/consul/consul.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,77 @@ | ||||
| // Package consul provides Consul Connect control plane | ||||
| package consul | ||||
|  | ||||
| import ( | ||||
| 	"log" | ||||
|  | ||||
| 	"github.com/hashicorp/consul/api" | ||||
| 	"github.com/hashicorp/consul/connect" | ||||
| 	"github.com/micro/go-micro" | ||||
| 	"github.com/micro/go-micro/broker" | ||||
| 	"github.com/micro/go-micro/registry/consul" | ||||
| 	"github.com/micro/go-micro/transport" | ||||
| ) | ||||
|  | ||||
| type proxyService struct { | ||||
| 	c *connect.Service | ||||
| 	micro.Service | ||||
| } | ||||
|  | ||||
| func newService(opts ...micro.Option) micro.Service { | ||||
| 	// we need to use the consul registry to register connect applications | ||||
| 	r := consul.NewRegistry( | ||||
| 		consul.Connect(), | ||||
| 	) | ||||
|  | ||||
| 	// pass in the registry as part of our options | ||||
| 	newOpts := append([]micro.Option{micro.Registry(r)}, opts...) | ||||
|  | ||||
| 	// service := micro.NewService(newOpts...) | ||||
| 	service := micro.NewService(newOpts...) | ||||
|  | ||||
| 	// get the consul address | ||||
| 	addrs := service.Server().Options().Registry.Options().Addrs | ||||
|  | ||||
| 	// set the config | ||||
| 	config := api.DefaultConfig() | ||||
| 	if len(addrs) > 0 { | ||||
| 		config.Address = addrs[0] | ||||
| 	} | ||||
|  | ||||
| 	// create consul client | ||||
| 	client, err := api.NewClient(api.DefaultConfig()) | ||||
| 	if err != nil { | ||||
| 		log.Fatal(err) | ||||
| 	} | ||||
|  | ||||
| 	// create connect service using the service name | ||||
| 	svc, err := connect.NewService(service.Server().Options().Name, client) | ||||
| 	if err != nil { | ||||
| 		log.Fatal(err) | ||||
| 	} | ||||
|  | ||||
| 	// setup transport tls config | ||||
| 	service.Options().Transport.Init( | ||||
| 		transport.TLSConfig(svc.ServerTLSConfig()), | ||||
| 	) | ||||
|  | ||||
| 	// setup broker tls config | ||||
| 	service.Options().Broker.Init( | ||||
| 		broker.TLSConfig(svc.ServerTLSConfig()), | ||||
| 	) | ||||
|  | ||||
| 	// return a new proxy enabled service | ||||
| 	return &proxyService{ | ||||
| 		c:       svc, | ||||
| 		Service: service, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (p *proxyService) String() string { | ||||
| 	return "consul" | ||||
| } | ||||
|  | ||||
| // NewService returns a Consul Connect-Native micro.Service | ||||
| func NewService(opts ...micro.Option) micro.Service { | ||||
| 	return newService(opts...) | ||||
| } | ||||
							
								
								
									
										30
									
								
								proxy/control/nats/nats.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								proxy/control/nats/nats.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| // Package nats provides a NATS control plane | ||||
| package nats | ||||
|  | ||||
| import ( | ||||
| 	"github.com/micro/go-micro" | ||||
| 	broker "github.com/micro/go-plugins/broker/nats" | ||||
| 	registry "github.com/micro/go-plugins/registry/nats" | ||||
| 	transport "github.com/micro/go-plugins/transport/nats" | ||||
| ) | ||||
|  | ||||
| // NewService returns a NATS micro.Service | ||||
| func NewService(opts ...micro.Option) micro.Service { | ||||
| 	// initialise nats components | ||||
| 	b := broker.NewBroker() | ||||
| 	r := registry.NewRegistry() | ||||
| 	t := transport.NewTransport() | ||||
|  | ||||
| 	// create new options | ||||
| 	options := []micro.Option{ | ||||
| 		micro.Broker(b), | ||||
| 		micro.Registry(r), | ||||
| 		micro.Transport(t), | ||||
| 	} | ||||
|  | ||||
| 	// append user options | ||||
| 	options = append(options, opts...) | ||||
|  | ||||
| 	// return a nats service | ||||
| 	return micro.NewService(options...) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user