我想要實現在暴雨以下拓撲:我應該使用哪種方法來實現此Storm拓撲?
a1->a2->a3->a4
| |
-<----<--
b1->b2->b3->b4
| |
-<----<--
需要注意的是A1,B1和A2,B2等是相同的螺栓。有兩個相同的流,但在這些螺栓之間傳遞的元組必須保留在流中。從a4→a2,b4→b2也有一個循環。
爲了實現單獨的流,我想要在streamID字段上使用fieldsGrouping或爲每個流創建單獨的streamID。後面的選項似乎更好,但我的實現似乎不夠優雅。
builder.setBolt("a2", new A2(), 1).shuffleGrouping("a1", "streamA");
builder.setBolt("b2", new B2(), 1).shuffleGrouping("b1", "streamB");
然後在同樣繼續實施第二個要求:
builder.setBolt("a2", new A2(), 1).shuffleGrouping("a4", "stream1");
有沒有更好的辦法?
你能從A4生成一個元素,它將在A1中被檢查爲噴口元組而不是A2上的循環嗎?或者,這是A4到A2完成的完全不同的操作(不等於A1到A2)? – zenbeni 2014-11-05 21:28:23
對不起,我不明白這個問題。流中發生的事情是a1,a2,a3和a4順序處理消息。 a4可能會定期從下游接收消息(未在我的圖中顯示),然後它必須將消息傳遞給a2。 – Johnny 2014-11-05 22:39:33
你應該記錄這種情況,我覺得應該有更好的事情做。恕我直言,你不應該在一個博爾特「煎餅」的擔憂。如果可能的話,最好在另一個螺栓/流中分開這種情況。 – zenbeni 2014-11-06 13:57:24