コード例 #1
0
 private Set<String> componentBoltSubscriptions(Component component) {
   Set<String> ret = new HashSet<String>();
   for (InputDeclaration d : component.declarations) {
     ret.add(d.getComponent());
   }
   return ret;
 }
コード例 #2
0
  public void extendTopology(TopologyBuilder builder) {
    BoltDeclarer declarer =
        builder.setBolt(_masterId, new CoordinatedBolt(_masterBolt.bolt), _masterBolt.parallelism);
    for (InputDeclaration decl : _masterBolt.declarations) {
      decl.declare(declarer);
    }
    for (Map conf : _masterBolt.componentConfs) {
      declarer.addConfigurations(conf);
    }
    for (String id : _bolts.keySet()) {
      Component component = _bolts.get(id);
      Map<String, SourceArgs> coordinatedArgs = new HashMap<String, SourceArgs>();
      for (String c : componentBoltSubscriptions(component)) {
        SourceArgs source;
        if (c.equals(_masterId)) {
          source = SourceArgs.single();
        } else {
          source = SourceArgs.all();
        }
        coordinatedArgs.put(c, source);
      }

      BoltDeclarer input =
          builder.setBolt(
              id,
              new CoordinatedBolt(component.bolt, coordinatedArgs, null),
              component.parallelism);
      for (Map conf : component.componentConfs) {
        input.addConfigurations(conf);
      }
      for (String c : componentBoltSubscriptions(component)) {
        input.directGrouping(c, Constants.COORDINATED_STREAM_ID);
      }
      for (InputDeclaration d : component.declarations) {
        d.declare(input);
      }
    }
  }