2016-05-11 2 views
0

私はapache-Stormで並列性の概念を使用しようとしています。単一のトポロジで複数のスパウトを提出する方法を知りたいと思います。ここでapache stormのシングルトポロジで複数のスパウトを送信するには?

は、単一のトポロジー提出あなたが道を、次のトポロジで複数の噴出を使用することができます

TwitterTopologyCreator topology = new TwitterTopologyCreator(); 
topology.createTopology(topologyName, clientName); 

答えて

0

ための私のコードです。

TwitterTopologyCreator topology = new TwitterTopologyCreator();  
topology.setSpout("kafka-spout1", new KafkaSpout(spoutConf1), 1); 
topology.setSpout("kafka-spout2", new KafkaSpout(spoutConf2), 1); 
topology.createTopology(topologyName, clientName); 
1

2つのスパウトでさまざまな設定が可能です。私はいくつかのよく使われるトポロジ構成を2つのスパウトで掲示しています。

public class Test {  
    public static void main(String[] args) throws Exception {   
     /* 
     * 
     * topology with 2 spout (configuration 1) 
     * 
     * spout-1 --> 
     *   |--> bolt-1 
     * spout-2 --> 
     * 
     */ 

     TopologyBuilder configuration1=new TopologyBuilder(); 
     configuration1.setSpout("spout-1", new Spout1()); 
     configuration1.setSpout("spout-2", new Spout2()); 
     configuration1.setBolt("bolt-1", new Bolt1()).shuffleGrouping("spout-1").shuffleGrouping("spout-2"); 

     /* 
     * 
     * topology with 2 spout (configuration 2) 
     * 
     * spout-1 --> bolt-1 
     *  
     * spout-2 --> bolt-2 
     * 
     */ 

     TopologyBuilder configuration2=new TopologyBuilder(); 
     configuration2.setSpout("spout-1", new Spout1()); 
     configuration2.setSpout("spout-2", new Spout2()); 
     configuration2.setBolt("bolt-1", new Bolt1()).shuffleGrouping("spout-1"); 
     configuration2.setBolt("bolt-2", new Bolt2()).shuffleGrouping("spout-2"); 

     /* 
     * 
     * topology with 2 spout (configuration 3) 
     * 
     * spout-1 --> bolt-1 --> 
     *      |--> bolt-3 
     * spout-2 --> bolt-2 --> 
     * 
     */ 
     TopologyBuilder configuration3=new TopologyBuilder(); 
     configuration2.setSpout("spout-1", new Spout1()); 
     configuration2.setSpout("spout-2", new Spout2()); 
     configuration2.setBolt("bolt-1", new Bolt1()).shuffleGrouping("spout-1"); 
     configuration2.setBolt("bolt-2", new Bolt2()).shuffleGrouping("spout-2"); 
     configuration2.setBolt("bolt-3", new Bolt3()).shuffleGrouping("bolt-1").shuffleGrouping("bolt-2");       
    }  
}