X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fpersistence%2Fkafka%2FKafkaChatRoomFactory.java;h=f81d21f118b855c434f5f824bc99b61421c9e142;hb=915ed8f85459da3c95f86b6351a3d7129668bc8e;hp=20d85e8035048301db0d8491ed809689a3498458;hpb=ead1db4a7daa0bcf944063f3920b3974c2f62e07;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/persistence/kafka/KafkaChatRoomFactory.java b/src/main/java/de/juplo/kafka/chat/backend/persistence/kafka/KafkaChatRoomFactory.java index 20d85e80..f81d21f1 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/persistence/kafka/KafkaChatRoomFactory.java +++ b/src/main/java/de/juplo/kafka/chat/backend/persistence/kafka/KafkaChatRoomFactory.java @@ -2,16 +2,32 @@ package de.juplo.kafka.chat.backend.persistence.kafka; import de.juplo.kafka.chat.backend.domain.ChatRoom; import de.juplo.kafka.chat.backend.domain.ChatRoomFactory; +import de.juplo.kafka.chat.backend.domain.ChatRoomService; +import de.juplo.kafka.chat.backend.domain.ShardingStrategy; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import reactor.core.publisher.Mono; +import java.time.Clock; import java.util.UUID; +@RequiredArgsConstructor +@Slf4j public class KafkaChatRoomFactory implements ChatRoomFactory { + private final KafkaChatHomeService kafkaChatHomeService; + private final ShardingStrategy shardingStrategy; + private final Clock clock; + private final int bufferSize; + @Override public Mono createChatRoom(UUID id, String name) { - return null; + log.info("Creating ChatRoom with buffer-size {}", bufferSize); + int shard = shardingStrategy.selectShard(id); + KafkaChatRoomService service = new KafkaChatRoomService(kafkaChatHomeService, id); + ChatRoom chatRoom = new ChatRoom(id, name, shard, clock, service, bufferSize); + kafkaChatHomeService.putChatRoom(chatRoom); } }