我的拓扑从kafka读取,并对外部系统进行http调用。Kafka的接收率大约是每秒200条信息。外部系统每秒仅支持20个http调用。我怎样才能引入节流,使发出http调用的bolt每秒只处理20条消息?
gg58donl1#
你可以用 topology.max.spout.pending 设置为基于拓扑中飞行的元组数来限制喷口。该设置是针对每个喷口示例的,因此如果您有10个喷口执行器,并且您设置了最大100个元组,那么您将在拓扑中获得最大1000个元组。你可以用 resetTimeout 上的方法 OutputCollector 为了防止要延迟的元组由于超时而失败。也就是说,您可能需要将消息打包成更大的包。如果每秒只能处理20条消息,而每秒的输入为200条,则会开始落后,永远赶不上。
topology.max.spout.pending
resetTimeout
OutputCollector
1条答案
按热度按时间gg58donl1#
你可以用
topology.max.spout.pending
设置为基于拓扑中飞行的元组数来限制喷口。该设置是针对每个喷口示例的,因此如果您有10个喷口执行器,并且您设置了最大100个元组,那么您将在拓扑中获得最大1000个元组。你可以用
resetTimeout
上的方法OutputCollector
为了防止要延迟的元组由于超时而失败。也就是说,您可能需要将消息打包成更大的包。如果每秒只能处理20条消息,而每秒的输入为200条,则会开始落后,永远赶不上。