feat: Introduced config-parameters for the `io.projectreactor`-logging
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / ChatBackendProperties.java
index 26149de..df4d1cd 100644 (file)
@@ -4,7 +4,9 @@ import lombok.Getter;
 import lombok.Setter;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
+import java.net.URI;
 import java.nio.file.Paths;
+import java.util.logging.Level;
 
 
 @ConfigurationProperties("chat.backend")
@@ -12,7 +14,49 @@ import java.nio.file.Paths;
 @Setter
 public class ChatBackendProperties
 {
-  private String datadir = Paths.get(System.getProperty("java.io.tmpdir"),"chat", "backend").toString();
+  private String instanceId = "DEV";
   private String allowedOrigins = "http://localhost:4200";
   private int chatroomBufferSize = 8;
+  private ServiceType services = ServiceType.inmemory;
+  private InMemoryServicesProperties inmemory = new InMemoryServicesProperties();
+  private KafkaServicesProperties kafka = new KafkaServicesProperties();
+  private ProjectreactorProperties projectreactor = new ProjectreactorProperties();
+
+
+  @Getter
+  @Setter
+  public static class InMemoryServicesProperties
+  {
+    private ShardingStrategyType shardingStrategy = ShardingStrategyType.none;
+    private int numShards = 1;
+    private int[] ownedShards = new int[0];
+    private URI[] shardOwners = new URI[0];
+    private StorageStrategyType storageStrategy = StorageStrategyType.none;
+    private String storageDirectory = Paths.get(System.getProperty("java.io.tmpdir"),"chat", "backend").toString();
+  }
+
+  @Getter
+  @Setter
+  public static class KafkaServicesProperties
+  {
+    private URI instanceUri = URI.create("http://localhost:8080");
+    private String clientIdPrefix = "DEV";
+    private String bootstrapServers = ":9092";
+    private String infoChannelTopic = "info_channel";
+    private String dataChannelTopic = "data_channel";
+    private int numPartitions = 2;
+    private String haproxyRuntimeApi = "haproxy:8401";
+    private String haproxyMap = "/usr/local/etc/haproxy/sharding.map";
+  }
+
+  @Getter
+  @Setter
+  public static class ProjectreactorProperties
+  {
+    private Level loggingLevel = Level.FINE;
+    private boolean showOperatorLine = true;
+  }
+  public enum ServiceType { inmemory, kafka }
+  public enum StorageStrategyType { none, files, mongodb }
+  public enum ShardingStrategyType { none, kafkalike }
 }