Apache Storm:基于配置的节流喷口

时间:2019-07-04 08:10:12

标签: apache-storm

我的拓扑结构从Kafka读取,并对外部系统进行HTTP调用。卡夫卡的接收速率约为每秒200条消息。外部系统每秒仅支持20个HTTP调用。我该如何引入限制,以便进行HTTP调用的螺栓每秒仅处理20条消息?

1 个答案:

答案 0 :(得分:1)

您可以使用topology.max.spout.pending设置,根据拓扑中正在运行的元组来限制喷口。该设置是针对每个喷口实例,因此如果您有10个喷口执行程序,您最多设置100个元组,则拓扑结构中最多可以包含1000个元组。

您可以在resetTimeout上使用OutputCollector方法,以防止由于超时而使您要推迟的元组失败。

这就是说,您可能需要将消息打包成更大的包。如果您每秒只能处理20条消息,并且每秒输入200条消息,那么您将开始落后并永远无法追上。