public RequestRateModule(ModuleConfiguration configuration, List<Reporter> reporters,
final GlobalConfiguration globalConfiguration) throws ConfigurationException {
super(configuration, reporters, globalConfiguration);
RequestRateConfiguration config = RequestRateConfiguration.create(configuration.options);
service = configuration.getMeasurementOrDefault(DEFAULT_MEASUREMENT_NAME);
period = config.period();
timeunit = config.timeunit();
rateFactor = timeunit.toSeconds(period);
requestRates = initRequestRates(config);
logger.info("RequestRate module initialized with {} {} reporting period and requests to report: {}.", period,
timeunit.name(), config.requestsToReport());
timer = new Timer(REQUEST_RATE_THREAD_NAME);
timer.schedule(new RequestRateTask(), 0, config.reportingRateInMillis());
}