func GetRequest(msg gotocol.Message, name string, listener chan gotocol.Message, requestor *map[string]gotocol.Routetype, microservices *map[string]chan gotocol.Message, microindex *map[int]chan gotocol.Message) { if len(*microservices) > 0 { if len(*microindex) != len(*microservices) { // rebuild index i := 0 for _, ch := range *microservices { (*microindex)[i] = ch i++ } } m := rand.Intn(len(*microservices)) // pass on request to a random service - client send outmsg := gotocol.Message{gotocol.GetRequest, listener, time.Now(), msg.Ctx.NewParent(), msg.Intention} flow.AnnotateSend(outmsg, name) (*requestor)[outmsg.Ctx.Route()] = msg.Route() // remember where to respond to when this span comes back outmsg.GoSend((*microindex)[m]) } }