package stormapplied.flashsale.metrics; import backtype.storm.metric.api.IMetric; import java.util.HashMap; import java.util.Map; public class MultiSuccessRateMetric implements IMetric { Map<String, SuccessRateMetric> rates = new HashMap(); public SuccessRateMetric scope(String key) { SuccessRateMetric rate = rates.get(key); if (rate == null) { rate = new SuccessRateMetric(); rates.put(key, rate); } return rate; } public Object getValueAndReset() { Map ret = new HashMap(); for(Map.Entry<String, SuccessRateMetric> e : rates.entrySet()) { ret.put(e.getKey(), e.getValue().getValueAndReset()); } rates.clear(); return ret; } }