使用计时器进行批处理操作

时间:2019-04-18 21:28:06

标签: micrometer spring-micrometer

我对使用测微计是陌生的,正在尝试查看是否有一种方法可以使用计时器,该计时器还可以包括批处理方案中的项目数计数。由于我正在使用Java流处理批处理,因此没有找到一种显而易见的方法来记录每个已处理项目的计时器,因此我正在寻找一种设置批处理大小属性的方法。我认为可行的一种方法是使用https://micrometer.io/docs/concepts#_function_tracking_timers中的FunctionTimer,但是我认为这要求应用程序为总计数和总时间保持一组持续单调增加的值。

有没有一种更简单的方法可以完成?最终,这些数据将被馈送到New Relic。我也尝试过为批次大小设置标签,但是这些标签似乎被报告为字符串,因此我无法对值进行任何类型的汇总。

谢谢!

1 个答案:

答案 0 :(得分:0)

一个计时器用于测量一个动作,并且至少会产生两个测量结果:一个计数和一个持续时间。

因此,计时器将非常适合您的批处理。在Java流中,peek操作可能是放置计时器的好地方。

如果您要处理20个元素,而只是测量所有20个元素的时间,则需要创建一个新的Counter来测量批次大小。您可以将计时器的总时长除以您的计数器以获得每个项目的时长,也可以将计时器的总时数除以计时器的总计数来获得每个批次的时长。

如果您希望获得代码片段的反馈,请随时添加。