在尊重最大Spout Pending的同时关闭KafkaSpout中的跟踪

时间:2015-02-20 20:34:28

标签: apache-storm apache-kafka

我正在使用风暴0.9.3。我试图关闭我的拓扑结构的每个元组的acking。我将Config.TOPOLOGY_ACKER_EXECUTORS设置为0,将maxSpoutPending设置为500.当我运行拓扑时,我注意到maxSpoutPending被忽略,并且spout继续远远超过该限制。这是我的配置 -

config.setNumWorkers(3);
config.setMaxSpoutPending(500);
config.put("topology.sleep.spout.wait.strategy.time.ms", 50);
config.put("topology.message.timeout.secs", 300);
config.put(Config.TOPOLOGY_ACKER_EXECUTORS, 0);

我正在使用KafkaSpout从Kafka读取并使用单个螺栓来使用该消息。

1 个答案:

答案 0 :(得分:1)

通过将TOPOLOGY_ACKER_EXECUTORS设置为0,风暴将在它们从喷口脱落时立即确认所有元组,这可能不可靠,因为没有机制可以检查元组是处理还是失败。
并且通过设置setMaxSpoutPending告诉storm要处理的spout上待处理的元组的最大数量。 MaxSpoutPending不会限制您的输出。如果要查看风暴拓扑的实际输出频率,请在Storm UI中检查正在运行的风暴拓扑的topology latency