หลังจากใช้โทโพโลยี 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
โดยตรงนั้น...
ไม่มีใครรู้ว่ามีการสร้างโบลต์อย่างไร และเป็นไปได้อย่างไรที่บางฟิลด์จะเริ่มต้นได้ แต่บางฟิลด์จะไม่ได้เริ่มต้น