public void feed(List<Object> tuple) { feed(tuple, UUID.randomUUID().toString()); }
public void feedNoWait(List<Object> tuple, Object msgId) { spout.feedNoWait(tuple, msgId); }
.withDaemonConf(Collections.singletonMap(Config.TOPOLOGY_ENABLE_MESSAGE_TIMEOUTS, true)) .build()) { FeederSpout feeder = new FeederSpout(new Fields("field1")); AckFailMapTracker tracker = new AckFailMapTracker(); feeder.setAckFailDelegate(tracker); Map<String, SpoutDetails> spoutMap = Collections.singletonMap("1", Thrift.prepareSpoutDetails(feeder)); Map<String, BoltDetails> boltMap = new HashMap<>(); feeder.feed(new Values("a"), 1); feeder.feed(new Values("b"), 2); feeder.feed(new Values("c"), 3); cluster.advanceClusterTime(9); assertAcked(tracker, 1, 3);
+ "Run with storm local not storm jar"); FeederSpout genderSpout = new FeederSpout(new Fields("id", "gender")); FeederSpout ageSpout = new FeederSpout(new Fields("id", "age")); gender = "female"; genderSpout.feed(new Values(i, gender)); ageSpout.feed(new Values(i, i + 20));
public AckTrackingFeeder(String... fields) { tracker = new AckTracker(); spout = new FeederSpout(new Fields(fields)); spout.setAckFailDelegate(tracker); }
public static void main(String[] args) throws Exception { if (!NimbusClient.isLocalOverride()) { throw new IllegalStateException("This example only works in local mode. " + "Run with storm local not storm jar"); } FeederSpout genderSpout = new FeederSpout(new Fields("id", "gender")); FeederSpout ageSpout = new FeederSpout(new Fields("id", "age")); TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("genderSpout", genderSpout); builder.setSpout("ageSpout", ageSpout); // inner join of 'age' and 'gender' records on 'id' field JoinBolt joiner = new JoinBolt("genderSpout", "id") .join("ageSpout", "id", "genderSpout") .select("genderSpout:id,ageSpout:id,gender,age") .withTumblingWindow(new BaseWindowedBolt.Duration(10, TimeUnit.SECONDS)); builder.setBolt("joiner", joiner) .fieldsGrouping("genderSpout", new Fields("id")) .fieldsGrouping("ageSpout", new Fields("id")); builder.setBolt("printer", new PrinterBolt()).shuffleGrouping("joiner"); Config conf = new Config(); StormSubmitter.submitTopologyWithProgressBar("join-example", conf, builder.createTopology()); generateGenderData(genderSpout); generateAgeData(ageSpout); }
.withSimulatedTime() .build()) { FeederSpout feeder = new FeederSpout(new Fields("field1")); AckFailMapTracker tracker = new AckFailMapTracker(); feeder.setAckFailDelegate(tracker); feeder.feed(new Values("a"), 1); feeder.feed(new Values("b"), 2); feeder.feed(new Values("c"), 3); cluster.advanceClusterTime(9); assertAcked(tracker, 1, 3);
FeederSpout genderSpout = new FeederSpout(new Fields("id", "gender")); FeederSpout ageSpout = new FeederSpout(new Fields("id", "age"));
.withDaemonConf(Collections.singletonMap(Config.TOPOLOGY_ENABLE_MESSAGE_TIMEOUTS, true)) .build()) { FeederSpout feeder = new FeederSpout(new Fields("field1")); AckFailMapTracker tracker = new AckFailMapTracker(); feeder.setAckFailDelegate(tracker); Map<String, SpoutDetails> spoutMap = Collections.singletonMap("1", Thrift.prepareSpoutDetails(feeder)); Map<String, BoltDetails> boltMap = new HashMap<>(); feeder.feed(new Values("a"), 1); feeder.feed(new Values("b"), 2); cluster.advanceClusterTime(9); feeder.feed(new Values("c"), 3); assertAcked(tracker, 3); cluster.advanceClusterTime(9); feeder.feed(new Values("d"), 4); assertAcked(tracker, 4); cluster.advanceClusterTime(2); feeder.feed(new Values("e"), 5); assertAcked(tracker, 5);
private static void generateGenderData(FeederSpout genderSpout) { for (int i = 0; i < 10; i++) { String gender; if (i % 2 == 0) { gender = "male"; } else { gender = "female"; } genderSpout.feed(new Values(i, gender)); } } }
@Test public void testSubmitInactiveTopology() throws Exception { try (LocalCluster cluster = new LocalCluster.Builder() .withSimulatedTime() .withDaemonConf(Collections.singletonMap(Config.TOPOLOGY_ENABLE_MESSAGE_TIMEOUTS, true)) .build()) { FeederSpout feeder = new FeederSpout(new Fields("field1")); AckFailMapTracker tracker = new AckFailMapTracker(); feeder.setAckFailDelegate(tracker); Map<String, SpoutDetails> spoutMap = new HashMap<>(); spoutMap.put("1", Thrift.prepareSpoutDetails(feeder)); spoutMap.put("2", Thrift.prepareSpoutDetails(new OpenTrackedSpout())); Map<String, BoltDetails> boltMap = new HashMap<>(); boltMap.put("3", Thrift.prepareBoltDetails(Collections.singletonMap(Utils.getGlobalStreamId("1", null), Thrift.prepareGlobalGrouping()), new PrepareTrackedBolt())); boltPrepared = false; spoutOpened = false; StormTopology topology = Thrift.buildTopology(spoutMap, boltMap); cluster.submitTopologyWithOpts("test", Collections.singletonMap(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS, 10), topology, new SubmitOptions(TopologyInitialStatus.INACTIVE)); cluster.advanceClusterTime(11); feeder.feed(new Values("a"), 1); cluster.advanceClusterTime(9); assertThat(boltPrepared, is(false)); assertThat(spoutOpened, is(false)); cluster.getNimbus().activate("test"); cluster.advanceClusterTime(12); assertAcked(tracker, 1); assertThat(boltPrepared, is(true)); assertThat(spoutOpened, is(true)); } }
private static void generateAgeData(FeederSpout ageSpout) { for (int i = 9; i >= 0; i--) { ageSpout.feed(new Values(i, i + 20)); } }
.withSimulatedTime() .build()) { FeederSpout feeder = new FeederSpout(new Fields("field1")); AckFailMapTracker tracker = new AckFailMapTracker(); feeder.setAckFailDelegate(tracker); feeder.feed(new Values("a"), 1); feeder.feed(new Values("b"), 2); feeder.feed(new Values("c"), 3); cluster.advanceClusterTime(9); assertAcked(tracker, 1, 3);
public void feed(List<Object> tuple, Object msgId) { spout.feed(tuple, msgId); }
FeederSpout feeder = new FeederSpout(new Fields("field1")); AckFailMapTracker tracker = new AckFailMapTracker(); feeder.setAckFailDelegate(tracker); feeder.feed(new Values("val"), 1); AssertLoop.assertAcked(tracker, 1);
public void feed(List<Object> tuple) { spout.feed(tuple); }
public void feed(List<Object> tuple) { feed(tuple, UUID.randomUUID().toString()); }
private static void generateAgeData(FeederSpout ageSpout) { for (int i = 9; i >= 0; i--) { ageSpout.feed(new Values(i, i + 20)); } }
private static void generateGenderData(FeederSpout genderSpout) { for (int i = 0; i < 10; i++) { String gender; if (i % 2 == 0) { gender = "male"; } else { gender = "female"; } genderSpout.feed(new Values(i, gender)); } } }