mirror of
https://github.com/go-micro/go-micro.git
synced 2024-11-24 08:02:32 +02:00
Merge pull request #669 from printfcoder/master
fix registry addr error for mq-rpc
This commit is contained in:
commit
2dd5109eee
@ -13,6 +13,7 @@ import (
|
||||
|
||||
consul "github.com/hashicorp/consul/api"
|
||||
"github.com/micro/go-micro/registry"
|
||||
mnet "github.com/micro/go-micro/util/net"
|
||||
hash "github.com/mitchellh/hashstructure"
|
||||
)
|
||||
|
||||
@ -250,6 +251,9 @@ func (c *consulRegistry) Register(s *registry.Service, opts ...registry.Register
|
||||
}
|
||||
|
||||
host, pt, _ := net.SplitHostPort(node.Address)
|
||||
if host == "" {
|
||||
host = node.Address
|
||||
}
|
||||
port, _ := strconv.Atoi(pt)
|
||||
|
||||
// register the service
|
||||
@ -351,7 +355,7 @@ func (c *consulRegistry) GetService(name string) ([]*registry.Service, error) {
|
||||
|
||||
svc.Nodes = append(svc.Nodes, ®istry.Node{
|
||||
Id: id,
|
||||
Address: fmt.Sprintf("%s:%d", address, s.Service.Port),
|
||||
Address: mnet.HostPort(address, s.Service.Port),
|
||||
Metadata: decodeMetadata(s.Service.Tags),
|
||||
})
|
||||
}
|
||||
|
@ -316,10 +316,15 @@ func (s *rpcServer) Register() error {
|
||||
md[k] = v
|
||||
}
|
||||
|
||||
// mq-rpc(eg. nats) doesn't need the port. its addr is queue name.
|
||||
if port != "" {
|
||||
addr = mnet.HostPort(addr, port)
|
||||
}
|
||||
|
||||
// register service
|
||||
node := ®istry.Node{
|
||||
Id: config.Name + "-" + config.Id,
|
||||
Address: mnet.HostPort(addr, port),
|
||||
Address: addr,
|
||||
Metadata: md,
|
||||
}
|
||||
|
||||
|
@ -14,12 +14,13 @@ func HostPort(addr string, port interface{}) string {
|
||||
if strings.Count(addr, ":") > 0 {
|
||||
host = fmt.Sprintf("[%s]", addr)
|
||||
}
|
||||
// TODO check for NATS case
|
||||
if v, ok := port.(string); ok {
|
||||
if v == "" {
|
||||
return fmt.Sprintf("%s", host)
|
||||
}
|
||||
// when port is blank or 0, host is a queue name
|
||||
if v, ok := port.(string); ok && v == "" {
|
||||
return host
|
||||
} else if v, ok := port.(int); ok && v == 0 && net.ParseIP(host) == nil {
|
||||
return host
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%s:%v", host, port)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user