TickTuple不起作用

时间:2015-03-26 10:05:56

标签: java apache-kafka apache-storm

我有一个风暴拓扑,我有一个从数据库中读取的螺栓,并批量放入一个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

1 个答案:

答案 0 :(得分:0)

当您调用Submitter.submitTopology时,您必须将拓扑配置作为参数之一传递。

您可能在其他地方配置了tick元组频率,但没有将其置于将传递给拓扑的conf。