Как отправить несколько носиков в одной топологии в Apache Storm?
Я пытаюсь использовать концепцию параллелизма в Apache-Storm. Я хочу знать, как отправить несколько носиков по одной топологии.
Вот мой код для представления одной топологии
TwitterTopologyCreator topology = new TwitterTopologyCreator();
topology.createTopology(topologyName, clientName);
2 ответа
Может быть различная конфигурация с 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");
}
}
Вы можете использовать несколько носиков в топологии следующим образом.
TwitterTopologyCreator topology = new TwitterTopologyCreator();
topology.setSpout("kafka-spout1", new KafkaSpout(spoutConf1), 1);
topology.setSpout("kafka-spout2", new KafkaSpout(spoutConf2), 1);
topology.createTopology(topologyName, clientName);