示例#1
0
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])
	}
}