Skip to content

Commit 50e44f2

Browse files
chore: implement event manager interface and use the event deserializer
1 parent a8c2229 commit 50e44f2

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/env/infrastructure/events/KafkaClient.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,23 @@
88

99
package infrastructure.events;
1010

11+
import application.controller.manager.EventManager;
12+
import application.presenter.event.model.Event;
13+
import application.presenter.event.serialization.EventDeserializer;
14+
import application.presenter.event.serialization.EventDeserializerImpl;
1115
import org.apache.kafka.clients.consumer.KafkaConsumer;
1216

1317
import java.time.Duration;
1418
import java.util.List;
1519
import java.util.Map;
1620
import java.util.Objects;
21+
import java.util.function.Consumer;
1722
import java.util.logging.Logger;
1823

1924
/**
2025
* This class manage the Kafka client needed to consume events.
2126
*/
22-
public class KafkaClient {
27+
public class KafkaClient implements EventManager {
2328
private static final String BOOSTRAP_SERVER_URL_VARIABLE = "BOOTSTRAP_SERVER_URL";
2429
private static final String SCHEMA_REGISTRY_URL_VARIABLE = "SCHEMA_REGISTRY_URL";
2530
private static final String ROOM_EVENT_TOPIC = "room-events";
@@ -29,6 +34,7 @@ public class KafkaClient {
2934
private static KafkaClient instance;
3035

3136
private final KafkaConsumer<String, String> kafkaConsumer;
37+
private final EventDeserializer eventDeserializer;
3238

3339
/**
3440
* Obtain the current instance of the Kafka Client.
@@ -54,15 +60,19 @@ protected KafkaClient() {
5460
)
5561
);
5662
this.kafkaConsumer.subscribe(List.of(ROOM_EVENT_TOPIC, MEDICAL_TECHNOLOGY_EVENT_TOPIC));
63+
this.eventDeserializer = new EventDeserializerImpl();
5764
}
5865

5966
/**
6067
* Polling cycle to obtain all the events.
6168
*/
62-
public void poll() {
69+
@Override
70+
public void poll(final Consumer<Event<?>> eventConsumer) {
6371
while (true) {
6472
this.kafkaConsumer.poll(Duration.ofMillis(POLLING_TIME)).forEach(event -> {
73+
// log the event
6574
Logger.getLogger(KafkaClient.class.getName()).fine(event.toString());
75+
eventConsumer.accept(this.eventDeserializer.fromString(event.key(), event.value()));
6676
});
6777
}
6878
}

0 commit comments

Comments
 (0)