我们在创建拓扑时需要传递一个对象,以便 Bolt 可以访问该对象并基于该对象进行一些进一步的处理。是否可以通过传递对象TopplogyContext
如果是,怎么办?或者是否有其他方法可以在提交拓扑时传递对象,然后再提交,以便 Bolt 可以对其进行句柄/控制?
我们需要通过上下文传递对象,以便所有 Bolt 都可以访问它,并且不需要在该拓扑的所有 Bolt 中强制实现构造函数。那么,想知道是否存在可以执行相同操作的 API?
您可以在storm配置映射中传递该对象,前提是它是可序列化的。
在拓扑中任何 spout 或bolt 的prepare() 方法中,您可以检索此对象。
这是在拓扑提交时将对象放入配置映射中的方式:
Config conf = new Config();
MyObject myPreciousObject = new MyObject("precious");
conf.put("my.object",myPreciousObject);
StormSubmitter.submitTopology(args[0], conf, builder.createTopology());
这是在bolt或spout的prepare()方法中检索它的方法:
prepare(Map stormConf,TopologyContext context) {
MyObject myPreciousObject = (MyObject) stormConf.get("my.object");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)