import com.fasterxml.jackson.databind.ObjectMapper;
import de.juplo.kafka.chat.backend.ChatBackendProperties;
+import de.juplo.kafka.chat.backend.persistence.inmemory.ShardingStrategy;
import de.juplo.kafka.chat.backend.persistence.StorageStrategy;
-import de.juplo.kafka.chat.backend.persistence.inmemory.InMemoryChatRoomService;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration;
+import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.nio.file.Paths;
-import java.time.Clock;
@ConditionalOnProperty(
- prefix = "chat.backend",
- name = "storage",
- havingValue = "files",
- matchIfMissing = true)
+ prefix = "chat.backend.inmemory",
+ name = "storage-strategy",
+ havingValue = "files")
@Configuration
+@EnableAutoConfiguration(
+ exclude = {
+ MongoRepositoriesAutoConfiguration.class,
+ MongoAutoConfiguration.class })
public class FilesStorageConfiguration
{
@Bean
public StorageStrategy storageStrategy(
ChatBackendProperties properties,
- Clock clock,
+ ShardingStrategy shardingStrategy,
ObjectMapper mapper)
{
return new FilesStorageStrategy(
- Paths.get(properties.getStorageDirectory()),
- clock,
- properties.getChatroomBufferSize(),
- messageFlux -> new InMemoryChatRoomService(messageFlux),
+ Paths.get(properties.getInmemory().getStorageDirectory()),
+ shardingStrategy,
mapper);
}
}