在 Storm 中有没有一种方法可以计算由于超时而失败的元组数量?

In Storm is there a way to count the number of tuples that failed due to timeout?

我正在尝试围绕我们的 Storm 拓扑开发一些报告,我们想要报告的一个指标是由于超时而失败的元组数量。

据我所知,当 Storm 在超时长度之前未能完成元组时,它会自动使元组失败,但这似乎会发生 "behind the scenes" 而且我看不到区分超时失败与其他失败的方法故障类型。

有什么方法可以暴露或捕获这些信息吗?

如果您考虑 Storm 的 WebUI,对于每个螺栓都有一个失败元组的计数。这些计数只是 bolt 的手动失败元组(即通过 OutputCollector.fail(...) 失败),不包括 运行 超时的元组。 spout 有一个失败元组的总体计数器。因此,您可以简单地总结所有螺栓上手动失败的元组数量,并从全局 spout 计数中减去 if 以获得超时的元组数量。