@Test public void testGetBrokerInfo() throws Exception { String host = "localhost"; int port = 9092; int partition = 0; addPartition(partition, host, port); GlobalPartitionInformation brokerInfo = dynamicBrokersReader.getBrokerInfo(); assertEquals(1, brokerInfo.getOrderedPartitions().size()); assertEquals(port, brokerInfo.getBrokerFor(partition).port); assertEquals(host, brokerInfo.getBrokerFor(partition).host); }
@Test public void testSwitchHostForPartition() throws Exception { String host = "localhost"; int port = 9092; int partition = 0; addPartition(partition, host, port); GlobalPartitionInformation brokerInfo = dynamicBrokersReader.getBrokerInfo(); assertEquals(port, brokerInfo.getBrokerFor(partition).port); assertEquals(host, brokerInfo.getBrokerFor(partition).host); String newHost = host + "switch"; int newPort = port + 1; addPartition(partition, newHost, newPort); brokerInfo = dynamicBrokersReader.getBrokerInfo(); assertEquals(newPort, brokerInfo.getBrokerFor(partition).port); assertEquals(newHost, brokerInfo.getBrokerFor(partition).host); }
@Test public void testMultiplePartitionsOnSameHost() throws Exception { String host = "localhost"; int port = 9092; int partition = 0; int secondPartition = partition + 1; addPartition(partition, 0, host, port); addPartition(secondPartition, 0, host, port); GlobalPartitionInformation brokerInfo = dynamicBrokersReader.getBrokerInfo(); assertEquals(2, brokerInfo.getOrderedPartitions().size()); assertEquals(port, brokerInfo.getBrokerFor(partition).port); assertEquals(host, brokerInfo.getBrokerFor(partition).host); assertEquals(port, brokerInfo.getBrokerFor(secondPartition).port); assertEquals(host, brokerInfo.getBrokerFor(secondPartition).host); }
public static void main(String[] args) throws InterruptedException, AlreadyAliveException, InvalidTopologyException, AuthorizationException { TopologyBuilder builder = new TopologyBuilder(); Properties config = PropertiesUtil.getPropertiesFromClassPath(CONFIG_NAME); if (args.length >= 1) { final String topic = args[0]; logger.info("Reading from topic = " + topic); Broker brokerForPartition0 = new Broker(config.getProperty(BROKER)); GlobalPartitionInformation partitionInfo = new GlobalPartitionInformation(); partitionInfo.addPartition(0, brokerForPartition0); StaticHosts hosts = new StaticHosts(partitionInfo); SpoutConfig spoutConfig = new SpoutConfig(hosts, topic, "/" + topic, UUID.randomUUID().toString()); KafkaSpout kafkaSpout = new KafkaSpout(spoutConfig); builder.setSpout(KAFKA_SPOUT_READER, kafkaSpout, 1); builder .setBolt(KAFKA_AVRO_GROUPPER, new KafkaGrouperBolt(), 4) .shuffleGrouping(KAFKA_SPOUT_READER); builder .setBolt( KAFKA_AVRO_SENDER, new KafkaOutBolt() .withTopicSelector( new KafkaTopicSelector() { private static final long serialVersionUID = -9189810246209479112L; @Override public String getTopic(Tuple tuple) { Integer rand = (Integer) tuple.getValueByField(KafkaSenderFields.RANDOM); return KafkaSenderFields.RANDOM + rand; } }), 1) .fieldsGrouping(KAFKA_AVRO_GROUPPER, new Fields(KafkaSenderFields.RANDOM)); builder.setSpout( KAFKA_SPOUT_READER_RANDOM1, new KafkaSpout( new SpoutConfig(hosts, "random1", "/random1", UUID.randomUUID().toString())), 1); builder.setSpout( KAFKA_SPOUT_READER_RANDOM2, new KafkaSpout( new SpoutConfig(hosts, "random2", "/random2", UUID.randomUUID().toString())), 1); builder.setSpout( KAFKA_SPOUT_READER_RANDOM3, new KafkaSpout( new SpoutConfig(hosts, "random3", "/random3", UUID.randomUUID().toString())), 1); builder .setBolt(KAFKA_AVRO_CHECKER1, new KafkaCheckerBolt(1), 4) .shuffleGrouping(KAFKA_SPOUT_READER_RANDOM1); builder .setBolt(KAFKA_AVRO_CHECKER2, new KafkaCheckerBolt(2), 4) .shuffleGrouping(KAFKA_SPOUT_READER_RANDOM2); builder .setBolt(KAFKA_AVRO_CHECKER3, new KafkaCheckerBolt(3), 4) .shuffleGrouping(KAFKA_SPOUT_READER_RANDOM3); StormTopology kafkaTopology = builder.createTopology(); StormSubmitter.submitTopology(TOPOLOGY_NAME, getConfig(config), kafkaTopology); } else { throw new IllegalArgumentException("topic name is required"); } }