1
如何從風暴三叉戟中的同一個螺栓發射到多個流?在風暴三叉戟中發射到多個流
我有一個螺栓,它做了一些計算,並根據結果我想傳遞一些值到一個流,其他值到另一個流。
風暴(不三叉戟),我們可以做到這一點通過如下:
斯普利特流分成多個流:
@Override
public void declareOutputFields(final OutputFieldsDeclarer outputFieldsDeclarer) {
outputFieldsDeclarer.declareStream("type1-stream", new Fields("type1"));
outputFieldsDeclarer.declareStream("type2-stream", new Fields("type2"));
outputFieldsDeclarer.declareStream("error-stream", new Fields("error"));
}
然後根據調查結果發出,如:
collector.emit("type1-stream", new Values("type 1 data"));
collector.emit("type2-stream", new Values("type 2 data"));
collector.emit("error-stream", new Values("error data"));
然後通過收聽預期流來完成剩下的工作:
builder.setBolt("errorBolt", errorBolt).shuffleGrouping("errorBoltStream", "error-stream");
builder.setBolt("type1Bolt", type1Bolt).shuffleGrouping("type1BoltStream", "type1-stream");
那麼,如何使用Storm Trident實現相同的行爲?
一個選擇是基於鍵調用「每個」爲同流,並運行相同的螺栓上只能發出基於我想發出這樣的流,或另一種選擇是發出鍵值對和過濾信息流(如type1,type2,錯誤等),並再次創建多個流。但他們中沒有一個在我看來是一個好設計。什麼是實現它的最好方法?
我有同樣的問題。這有一個問題:https://issues.apache.org/jira/browse/STORM-68 –