func handleStaging(bbs bbs.StagerBBS, natsClient yagnats.NATSClient) { var task uint64 natsClient.SubscribeWithQueue("stage", "stager", func(msg *yagnats.Message) { var message stagingMessage err := json.Unmarshal(msg.Payload, &message) if err != nil { logger.Fatal("staging-request.invalid", map[string]interface{}{ "error": err.Error(), "payload": string(msg.Payload), }) return } for i := 0; i < message.Count; i++ { guid := atomic.AddUint64(&task, 1) task := &models.Task{ Guid: fmt.Sprintf("task-%d", guid), MemoryMB: message.MemoryMB, ReplyTo: msg.ReplyTo, } logger.Info("staging-request.desire", map[string]interface{}{ "task": task, }) go bbs.DesireTask(task) } }) }