Как отправить кортеж в другое пятно во время шторма

всем. Я хочу выполнить задание — один носик выдает числа в blotA, а BlotA выдает нечетные числа в Blot_odd , BlotA выдает четные числа в Blot_even. Я выбираю один из способов использования emit(streamId,tuple), но не знаю, где определить свой streamId?

В Blot_odd / Blot_even ,

declareOutputFields(){declarer.declareStream("streamId", new Fields("fieldName"));}

и в main из MyTopology.java

main() {
    TopologyBuilder builder = new TopologyBuilder();
    builder.setSpout("num", new NumSpout(), 10);
    builder.setBolt("judge", new Bolt(), 3).shuffleGrouping("num");
    builder.setBolt("odd", new Bolt_odd(), 2).shuffleGrouping("judge");
    builder.setBolt("even", new Bolt_even(), 2).shuffleGrouping("judge");
}

но я потерпел неудачу.


person Fire    schedule 07.05.2015    source источник
comment
пожалуйста, предоставьте свой код для нового Bolt(), нового Bolt_odd() и нового Bolt_even().   -  person chandu kavar    schedule 07.05.2015


Ответы (1)


Вы можете сделать, как показано ниже.

в методе declareOutputFields Bolt заполните данные следующим образом.

declarer.declareStream("oddstream", new Fields("fieldName"));
declarer.declareStream("evenstream", new Fields("fieldName"));

И вы можете объявить топологию, как показано ниже.

builder.setSpout("num", new NumSpout(), 10);
builder.setBolt("judge", new Bolt(), 3).shuffleGrouping("num");
builder.setBolt("odd", new Bolt_odd(), 2).shuffleGrouping("judge", "oddstream");
builder.setBolt("even", new Bolt_even(), 2).shuffleGrouping("judge", "evenstream");
person Adrian Seungjin Lee    schedule 08.05.2015