private StreamBolt addBolt(TopologyBuilder topologyBuilder, String boltId, Set<ProcessorNode> initialProcessors, List<ProcessorNode> group) { ProcessorBolt bolt = new ProcessorBolt(boltId, graph, group); BoltDeclarer boltDeclarer = topologyBuilder.setBolt(boltId, bolt, getParallelism(group)); bolt.setStreamToInitialProcessors(wireBolt(group, boltDeclarer, initialProcessors)); streamBolts.put(bolt, boltDeclarer); return bolt; }
private StreamBolt addWindowedBolt(TopologyBuilder topologyBuilder, String boltId, Set<ProcessorNode> initialProcessors, Window<?, ?> windowParam, List<ProcessorNode> group) { WindowedProcessorBolt bolt = new WindowedProcessorBolt(boltId, graph, group, windowParam); BoltDeclarer boltDeclarer = topologyBuilder.setBolt(boltId, bolt, getParallelism(group)); bolt.setStreamToInitialProcessors(wireBolt(group, boltDeclarer, initialProcessors)); streamBolts.put(bolt, boltDeclarer); return bolt; }
private StreamBolt addStatefulBolt(TopologyBuilder topologyBuilder, String boltId, Set<ProcessorNode> initialProcessors, List<ProcessorNode> group) { StateQueryProcessor<?, ?> stateQueryProcessor = getStateQueryProcessor(group); StatefulProcessorBolt<?, ?> bolt; if (stateQueryProcessor == null) { bolt = new StatefulProcessorBolt<>(boltId, graph, group); BoltDeclarer boltDeclarer = topologyBuilder.setBolt(boltId, bolt, getParallelism(group)); bolt.setStreamToInitialProcessors(wireBolt(group, boltDeclarer, initialProcessors)); streamBolts.put(bolt, boltDeclarer); } else { // state query is added to the existing stateful bolt ProcessorNode updateStateNode = stateQueryProcessor.getStreamState().getUpdateStateNode(); bolt = findStatefulProcessorBolt(updateStateNode); for (ProcessorNode node : group) { node.setComponentId(bolt.getId()); } bolt.addNodes(group); bolt.addStreamToInitialProcessors(wireBolt(bolt.getNodes(), streamBolts.get(bolt), initialProcessors)); } return bolt; }