После реализации очень простой топологии apache storm в java я столкнулся с NPE, что вызвало некоторую путаницу.
Это в основном мой основной метод:
TologyBuilder builder = new TopologyBuilder();
builder.setSpout("spout", new CustomSpout(true), 4);
final CustomBolt bolt = new CustomBolt();
builder.setBolt("bolt", bolt, 1).shuffleGrouping("spout");
LocalCluster cluster = new LocalCluster();
Map conf = new HashMap();
conf.put(Config.TOPOLOGY_WORKERS, 10);
cluster.submitTopology("test", conf, createTopology());
CustomBolt
расширяет класс AbstractBasic
и реализует IRichBolt
. У них есть эти поля:
abstract class AbstractBasic {
A a;
B b;
}
CustomBolt extends AbstractBasic implements IRichBolt {
A anotherA;
C c;
CustomBolt() {
this.anotherA = new A(true);
this.a = new A(false);
this.b = new B();
this.c = new C();
}
}
По методу execute
CustomBolt
будет несколько вставок во все классы. Однако поля, которые унаследованы от AbstractBasic
, не инстанцируются, а другие, те, что живут непосредственно в CustomBolt
,...
Кто-нибудь знает, как создается болт и как возможно, что некоторые поля инициализируются, а некоторые нет.