1 package dst.ass3.messaging.impl;
3 import com.rabbitmq.http.client.Client;
4 import dst.ass3.messaging.Constants;
5 import dst.ass3.messaging.IWorkloadMonitor;
6 import dst.ass3.messaging.RequestType;
8 import java.io.IOException;
9 import java.net.MalformedURLException;
10 import java.net.URISyntaxException;
11 import java.util.HashMap;
15 public class WorkloadMonitor implements IWorkloadMonitor {
17 public Map<RequestType, Long> getRequestCount() {
18 HashMap<RequestType, Long> ret = new HashMap<>();
20 Client c = new Client(Constants.RMQ_API_URL, Constants.RMQ_USER, Constants.RMQ_PASSWORD);
21 ret.put(RequestType.DOCUMENT, c.getQueue(Constants.RMQ_VHOST, Constants.QUEUE_DOCUMENT).getMessagesReady());
22 ret.put(RequestType.QUIZ, c.getQueue(Constants.RMQ_VHOST, Constants.QUEUE_QUIZ).getMessagesReady());
23 ret.put(RequestType.VIDEO, c.getQueue(Constants.RMQ_VHOST, Constants.QUEUE_VIDEO).getMessagesReady());
24 } catch (MalformedURLException | URISyntaxException e) {
25 throw new RuntimeException("Irrecoverable error", e); // Fail horribly
31 public Map<RequestType, Long> getWorkerCount() {
32 HashMap<RequestType, Long> ret = new HashMap<>();
34 Client c = new Client(Constants.RMQ_API_URL, Constants.RMQ_USER, Constants.RMQ_PASSWORD);
35 ret.put(RequestType.DOCUMENT, c.getQueue(Constants.RMQ_VHOST, Constants.QUEUE_DOCUMENT).getConsumerCount());
36 ret.put(RequestType.QUIZ, c.getQueue(Constants.RMQ_VHOST, Constants.QUEUE_QUIZ).getConsumerCount());
37 ret.put(RequestType.VIDEO, c.getQueue(Constants.RMQ_VHOST, Constants.QUEUE_VIDEO).getConsumerCount());
38 } catch (MalformedURLException | URISyntaxException e) {
39 throw new RuntimeException("Irrecoverable error", e); // Fail horribly
45 public Map<RequestType, Double> getAverageProcessingTime() {
50 public void close() throws IOException {