golang: optimize the logic of obtaining routing tasks (#580)

* golang: optimize the logic of obtaining routing tasks

* add log when queryRoute return nil

---------

Co-authored-by: guyinyou <guyinyou.gyy@alibaba-inc.com>
diff --git a/golang/client.go b/golang/client.go
index fbd3ef8..0a7defa 100644
--- a/golang/client.go
+++ b/golang/client.go
@@ -363,6 +363,7 @@
 	}
 
 	if len(response.GetMessageQueues()) == 0 {
+		cli.log.Errorf("queryRoute result has no messageQueue, requestId=%s", utils.GetRequestID(ctx))
 		return nil, errors.New("rocketmq: no available brokers")
 	}
 	return response.GetMessageQueues(), nil
@@ -499,7 +500,14 @@
 		cli.router.Range(func(k, v interface{}) bool {
 			topic := k.(string)
 			oldRoute := v
-			newRoute, _ := cli.queryRoute(context.TODO(), topic, cli.opts.timeout)
+			newRoute, err := cli.queryRoute(context.TODO(), topic, cli.opts.timeout)
+			if err != nil {
+				cli.log.Errorf("scheduled queryRoute err=%v", err)
+			}
+			if newRoute == nil && oldRoute != nil {
+				cli.log.Info("newRoute is nil, but oldRoute is not. do not update")
+				return true
+			}
 			if !reflect.DeepEqual(newRoute, oldRoute) {
 				cli.router.Store(k, newRoute)
 				switch impl := cli.clientImpl.(type) {