public static Map<String, TopicWorkload> retrieveTopicInRate(long timeInMs, long windowInMs, String c3Host, int c3Port, String kafkaCluster, List<String> topics) throws IOException { Map<String, TopicWorkload> workloads = new HashMap<>(); if (c3Port == 0) { return workloads; } long endSec = (timeInMs / 1000 - DEFAULT_QUERY_MINIMUM_END_TO_CURRENT_SEC) / 600 * 600; long startSec = endSec - windowInMs / 1000L; LOGGER.info("Retrieve workload for [{}, {}]", startSec, endSec); for (int i = 0; i < topics.size(); i += DEFAULT_BATCH_TOPICS) { StringBuilder query = new StringBuilder(); query.append("startSec="); query.append(startSec); query.append("&endSec="); query.append(endSec); query.append("&tier="); query.append(kafkaCluster); query.append("&topicList="); List<String> batch = topics.subList(i, Math.min(i + DEFAULT_BATCH_TOPICS, topics.size())); query.append(StringUtils.join(batch, ",")); String jsonStr = makeQuery(c3Host, c3Port, query.toString()); extractJsonResults(jsonStr, batch, workloads); } return workloads; }