Apache Storm:基于配置的节流 spout
Apache Storm: throttling spout based on configuration
我的拓扑结构从 Kafka 读取并向外部系统发出 HTTP 调用。 Kafka 中的摄取速率约为每秒 200 条消息。外部系统每秒仅支持 20 次 HTTP 调用。我如何引入节流,使发出 HTTP 调用的螺栓每秒仅处理 20 条消息?
您可以使用 topology.max.spout.pending
设置根据拓扑中正在运行的元组数量来限制 spout。该设置是针对每个 spout 实例的,因此如果您有例如10 个 spout 执行器,你设置最多 100 个元组,你将在拓扑中得到最多 1000 个元组。
您可以在 OutputCollector
上使用 resetTimeout
方法来防止您要推迟的元组因超时而失败。
话虽如此,您可能需要将邮件打包成更大的包。如果你每秒只能处理 20 条消息,而你的输入是每秒 200 条,你就会开始落后,永远追不上。
我的拓扑结构从 Kafka 读取并向外部系统发出 HTTP 调用。 Kafka 中的摄取速率约为每秒 200 条消息。外部系统每秒仅支持 20 次 HTTP 调用。我如何引入节流,使发出 HTTP 调用的螺栓每秒仅处理 20 条消息?
您可以使用 topology.max.spout.pending
设置根据拓扑中正在运行的元组数量来限制 spout。该设置是针对每个 spout 实例的,因此如果您有例如10 个 spout 执行器,你设置最多 100 个元组,你将在拓扑中得到最多 1000 个元组。
您可以在 OutputCollector
上使用 resetTimeout
方法来防止您要推迟的元组因超时而失败。
话虽如此,您可能需要将邮件打包成更大的包。如果你每秒只能处理 20 条消息,而你的输入是每秒 200 条,你就会开始落后,永远追不上。