]> git.somenet.org - pub/jan/dst18.git/blob - ass3-messaging/src/main/java/dst/ass3/messaging/impl/WorkloadMonitor.java
[3.1] messaging. need refactoring?
[pub/jan/dst18.git] / ass3-messaging / src / main / java / dst / ass3 / messaging / impl / WorkloadMonitor.java
1 package dst.ass3.messaging.impl;
2
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;
7
8 import java.io.IOException;
9 import java.net.MalformedURLException;
10 import java.net.URISyntaxException;
11 import java.util.HashMap;
12 import java.util.Map;
13
14
15 public class WorkloadMonitor implements IWorkloadMonitor {
16     @Override
17     public Map<RequestType, Long> getRequestCount() {
18         HashMap<RequestType, Long> ret = new HashMap<>();
19         try {
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
26         }
27         return ret;
28     }
29
30     @Override
31     public Map<RequestType, Long> getWorkerCount() {
32         HashMap<RequestType, Long> ret = new HashMap<>();
33         try {
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
40         }
41         return ret;
42     }
43
44     @Override
45     public Map<RequestType, Double> getAverageProcessingTime() {
46         return null;
47     }
48
49     @Override
50     public void close() throws IOException {
51
52     }
53 }