Java 在ApacheStorm中,如何度量线程之间经过的时间?

Java 在ApacheStorm中,如何度量线程之间经过的时间?,java,apache-storm,dropwizard,codahale-metrics,Java,Apache Storm,Dropwizard,Codahale Metrics,我正在使用[codahale metrics]获取Storm的螺栓和喷嘴的指标,并将其发送到Graphite服务器。我如何获得在螺栓和喷嘴之间发送消息的时间? 例如此代码仅适用于每个执行者的指标: import com.codahale.metrics.Histogram; import com.codahale.metrics.Meter; import com.codahale.metrics.Timer; public class MqttSensorDetailSpout extend

我正在使用[codahale metrics]获取Storm的螺栓和喷嘴的指标,并将其发送到Graphite服务器。我如何获得在螺栓和喷嘴之间发送消息的时间? 例如此代码仅适用于每个执行者的指标:

import com.codahale.metrics.Histogram;
import com.codahale.metrics.Meter;
import com.codahale.metrics.Timer;

public class MqttSensorDetailSpout extends BaseRichSpout {
    private Meter tupleMeter;
    private Timer tupleTimer;
    private Histogram tupleHistogram;
    public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
        this.context = context;
        this.collector = collector;
        this.tupleMeter = context.registerMeter("meterSpout-" + this.topic);
        this.tupleTimer = context.registerTimer("timerSpout-" + this.topic);
        this.tupleHistogram = context.registerHistogram("histogramSpout-" + this.topic);
    }
    public void nextTuple() {
        final Timer.Context timeContext = this.tupleTimer.time();
        this.tupleMeter.mark();
        try {
        …
        } finally {
            timeContext.stop();
        }
    }
}
我想知道执行者之间发送消息所用的时间。我将如何实施它?
谢谢,Felipe

Storm没有给消息加时间戳,因为我们无法确定人们是否在他们的服务器上设置了NTP或类似的设置。如果您想知道从一个执行器向另一个执行器发送一个元组需要多长时间,那么应该手动向发送的元组添加时间戳。您可以像添加任何其他元组字段一样添加它。然后,您的下游螺栓可以读取输入元组的时间戳,并计算传输所需的时间