@Override public void process(Query query) { final String statementType = query.statementType().name(); final String consistencyLevel = query.consistencyLevel().name(); for (RequestRate requestRate : requestRates) { if (statementMatches(statementType, requestRate) && consistencyLevelMatches(consistencyLevel, requestRate)) { requestRate.increment(); } } }
/** * Constructor. * * @param configuration Module configuration * @param reporters Reporter list * @param globalConfiguration Global diagnostics configuration * @throws ConfigurationException in case the provided module configuration is not valid */ 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()); }