code: func (b *Broker) consumeOne(delivery []byte, taskProcessor iface.TaskProcessor) error {
  	signature := new(tasks.Signature)
  	decoder := json.NewDecoder(bytes.NewReader(delivery))
  	decoder.UseNumber()
  	if err := decoder.Decode(signature); err != nil {
  		return errs.NewErrCouldNotUnmarshaTaskSignature(delivery, err)
  	}
  
  	// If the task is not registered, we requeue it,
  	// there might be different workers for processing specific tasks
  	if !b.IsTaskRegistered(signature.Name) {
  		conn := b.open()
  		defer conn.Close()
  
  		conn.Do("RPUSH", getQueue(b.GetConfig(), taskProcessor), delivery)
  		return nil
  	}
  
  	log.DEBUG.Printf("Received new message: %s", delivery)
  
  	return taskProcessor.Process(signature)
  }
docs: // consumeOne processes a single message using TaskProcessor