1 package de.juplo.kafka.chat.backend.persistence.kafka;
3 import de.juplo.kafka.chat.backend.domain.ChatRoom;
4 import de.juplo.kafka.chat.backend.domain.ChatRoomFactory;
5 import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
6 import de.juplo.kafka.chat.backend.domain.ShardingStrategy;
7 import lombok.RequiredArgsConstructor;
8 import lombok.extern.slf4j.Slf4j;
9 import reactor.core.publisher.Mono;
11 import java.time.Clock;
12 import java.util.UUID;
15 @RequiredArgsConstructor
17 public class KafkaChatRoomFactory implements ChatRoomFactory
19 private final ChatRoomChannel chatRoomChannel;
22 public Mono<ChatRoomInfo> createChatRoom(UUID id, String name)
24 log.info("Creating ChatRoom with buffer-size {}", bufferSize);
25 KafkaChatRoomService service = new KafkaChatRoomService(chatRoomChannel, id);
26 ChatRoom chatRoom = new ChatRoom(id, name, shard, clock, service, bufferSize);
27 chatRoomChannel.putChatRoom(chatRoom);
28 return Mono.just(chatRoom);