我有一个风暴拓扑,我有一个从数据库中读取的螺栓,并批量放入一个kafka队列。它在大约5秒内获得超过20K行。但是螺栓没有收到刻度元组。最终我收到堆空间错误。所以我把数量限制在10k以将消息推送到kafka队列。当从db读取完成后,我开始收到tick tuple消息。
spout计算从db获取的下一个数据,并将其提供给bolt,表名和时间范围。
protected static boolean isTickTuple(Tuple tuple) {
return tuple.getSourceComponent().equals(Constants.SYSTEM_COMPONENT_ID)
&& tuple.getSourceStreamId().equals(Constants.SYSTEM_TICK_STREAM_ID);
}
@Override
public Map<String, Object> getComponentConfiguration() {
Config conf = new Config();
int tickFrequencyInSeconds = 5;
conf.put(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS, tickFrequencyInSeconds);
return conf;
}`
Storm的版本是0.9.3
答案 0 :(得分:0)
当您调用Submitter.submitTopology时,您必须将拓扑配置作为参数之一传递。
您可能在其他地方配置了tick元组频率,但没有将其置于将传递给拓扑的conf。