1 package de.juplo.kafka.chat.backend;
3 import de.juplo.kafka.chat.backend.domain.ChatHome;
4 import de.juplo.kafka.chat.backend.domain.ChatHomeFactory;
5 import de.juplo.kafka.chat.backend.domain.ChatHomeService;
6 import de.juplo.kafka.chat.backend.persistence.StorageStrategy;
7 import org.springframework.boot.context.properties.EnableConfigurationProperties;
8 import org.springframework.context.annotation.Bean;
9 import org.springframework.context.annotation.Configuration;
11 import java.time.Clock;
15 @EnableConfigurationProperties(ChatBackendProperties.class)
16 public class ChatBackendConfiguration
20 ChatHomeFactory factory,
21 ChatBackendProperties properties,
22 StorageStrategy storageStrategy)
24 ChatHome[] chatHomes = new ChatHome[properties.getInmemory().getNumShards()];
27 .subscribe(chatRoom ->
29 int shard = chatRoom.getShard();
30 if (chatHomes[shard] == null)
31 chatHomes[shard] = factory.createChatHome(shard);
39 return Clock.systemDefaultZone();