我的拓扑结构从Kafka读取,并对外部系统进行HTTP调用。卡夫卡的接收速率约为每秒200条消息。外部系统每秒仅支持20个HTTP调用。我该如何引入限制,以便进行HTTP调用的螺栓每秒仅处理20条消息?
答案 0 :(得分:1)
您可以使用topology.max.spout.pending
设置,根据拓扑中正在运行的元组来限制喷口。该设置是针对每个喷口实例,因此如果您有10个喷口执行程序,您最多设置100个元组,则拓扑结构中最多可以包含1000个元组。
您可以在resetTimeout
上使用OutputCollector
方法,以防止由于超时而使您要推迟的元组失败。
这就是说,您可能需要将消息打包成更大的包。如果您每秒只能处理20条消息,并且每秒输入200条消息,那么您将开始落后并永远无法追上。