Last active
April 7, 2019 15:31
-
-
Save Xorlev/8058947 to your computer and use it in GitHub Desktop.
Example of emitting on multiple streams
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package storm.examples; | |
import backtype.storm.task.OutputCollector; | |
import backtype.storm.task.TopologyContext; | |
import backtype.storm.topology.OutputFieldsDeclarer; | |
import backtype.storm.topology.base.BaseRichBolt; | |
import backtype.storm.tuple.Fields; | |
import backtype.storm.tuple.Tuple; | |
import backtype.storm.tuple.Values; | |
import java.util.Map; | |
public class MultipleStreamBolt extends BaseRichBolt { | |
@Override | |
public void prepare(Map config, TopologyContext topologyContext, OutputCollector collector) { | |
this.collector = collector; | |
} | |
@Override | |
public void execute(Tuple tuple) { | |
// Lets break the tuple into pieces | |
collector.emit("stream1", tuple, new Values(tuple.getValue(0))); | |
collector.emit("stream2", tuple, new Values(tuple.getValue(1))); | |
// ^ stream ^ anchor ^ new tuple | |
// you can still emit on the default stream (e.g. the one named after the bolt) | |
collector.emit(tuple, new Values(...)); | |
collector.ack(tuple); | |
} | |
@Override | |
public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) { | |
outputFieldsDeclarer.declareStream("stream1", new Fields("field1")); | |
outputFieldsDeclarer.declareStream("stream2", new Fields("field2")); | |
outputFieldsDeclarer.declare(new Fields("defaultStreamField")); // if you want | |
} | |
} |
how know that multiple streams received succesfully.
How do you set the topology for multiple streams?
https://stackoverflow.com/a/30396802/3265888 this post may help on how to setup topology
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This looks very nice.