我正在使用[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();
}
}
}
我想知道执行者之间发送消息所花费的时间。我将如何实施? 谢谢菲利普
答案 0 :(得分:1)
暴风雨不会为消息加盖时间戳,因为我们无法确定人们是否在服务器上设置了NTP或类似内容。如果您想知道从一个执行器向另一个执行器发送元组需要多长时间,则应手动向发送的元组添加时间戳。您可以像其他任何元组字段一样添加它。然后您的下游螺栓可以读取输入元组的时间戳,并计算传输所需的时间。