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 de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;
-import java.time.Clock;
import java.util.UUID;
@Slf4j
public class KafkaChatRoomFactory implements ChatRoomFactory
{
- private final KafkaChatHomeService kafkaChatHomeService;
- private final ShardingStrategy shardingStrategy;
- private final Clock clock;
- private final int bufferSize;
+ private final ChatRoomChannel chatRoomChannel;
@Override
- public Mono<ChatRoom> createChatRoom(UUID id, String name)
+ public Mono<ChatRoomInfo> createChatRoom(UUID id, String name)
{
- 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);
+ log.info("Sending create-request for chat rooom: id={}, name={}");
+ return chatRoomChannel.sendCreateChatRoomRequest(id, name);
}
}