mirror of
https://github.com/go-micro/go-micro.git
synced 2025-06-12 22:07:47 +02:00
Cleanup and speedup network convergence along with direct messaging for connect and solicit
This commit is contained in:
@ -549,6 +549,7 @@ func (s *rpcServer) Register() error {
|
||||
node.Metadata["protocol"] = "mucp"
|
||||
|
||||
s.RLock()
|
||||
|
||||
// Maps are ordered randomly, sort the keys for consistency
|
||||
var handlerList []string
|
||||
for n, e := range s.handlers {
|
||||
@ -557,6 +558,7 @@ func (s *rpcServer) Register() error {
|
||||
handlerList = append(handlerList, n)
|
||||
}
|
||||
}
|
||||
|
||||
sort.Strings(handlerList)
|
||||
|
||||
var subscriberList []Subscriber
|
||||
@ -566,18 +568,20 @@ func (s *rpcServer) Register() error {
|
||||
subscriberList = append(subscriberList, e)
|
||||
}
|
||||
}
|
||||
|
||||
sort.Slice(subscriberList, func(i, j int) bool {
|
||||
return subscriberList[i].Topic() > subscriberList[j].Topic()
|
||||
})
|
||||
|
||||
endpoints := make([]*registry.Endpoint, 0, len(handlerList)+len(subscriberList))
|
||||
|
||||
for _, n := range handlerList {
|
||||
endpoints = append(endpoints, s.handlers[n].Endpoints()...)
|
||||
}
|
||||
|
||||
for _, e := range subscriberList {
|
||||
endpoints = append(endpoints, e.Endpoints()...)
|
||||
}
|
||||
s.RUnlock()
|
||||
|
||||
service := ®istry.Service{
|
||||
Name: config.Name,
|
||||
@ -586,9 +590,10 @@ func (s *rpcServer) Register() error {
|
||||
Endpoints: endpoints,
|
||||
}
|
||||
|
||||
s.Lock()
|
||||
// get registered value
|
||||
registered := s.registered
|
||||
s.Unlock()
|
||||
|
||||
s.RUnlock()
|
||||
|
||||
if !registered {
|
||||
log.Logf("Registry [%s] Registering node: %s", config.Registry.String(), node.Id)
|
||||
@ -610,6 +615,8 @@ func (s *rpcServer) Register() error {
|
||||
defer s.Unlock()
|
||||
|
||||
s.registered = true
|
||||
// set what we're advertising
|
||||
s.opts.Advertise = addr
|
||||
|
||||
// subscribe to the topic with own name
|
||||
sub, err := s.opts.Broker.Subscribe(config.Name, s.HandleEvent)
|
||||
|
Reference in New Issue
Block a user