code: public SpoutDeclarer setSpout(String id, IRichSpout spout, Number parallelismHint) {
      validateComponentName(id);
      SpoutDeclarer s = new SpoutDeclarer(id, spout, parallelismHint);
      spouts.put(id, s);
      return s;
    }
docs: Define a new spout in this topology with the specified parallelism. If the spout declares
  itself as non-distributed, the parallelismHint will be ignored and only one task
  will be allocated to this component.
  
  @param id the id of this component. This id is referenced by other components that want to consume this spout's outputs.
  @param parallelismHint the number of tasks that should be assigned to execute this spout. Each task will run on a thread in a process somwehere around the cluster.
  @param spout the spout