Ну, вы можете передать параметры конфигурации из файла свойств во время выполнения и установить ClassName в StreamsConfig.ROCKSDB_CONFIG_SETTER_CLASS_CONFIG
.Таким образом, вам не придется перекомпилировать и повторно развертывать ваш код снова и снова.Вместо этого во время выполнения вы сможете передавать значение свойств-2.
Пример: вы можете реализовать CustomRockDBConfig, как показано ниже:
public class CustomRocksDBConfig implements RocksDBConfigSetter {
public static long blockCacheSize = 50*1024*1024L;
public static long blockSize = 4096L;
public static boolean cacheIndexAndFilterBlock = false;
public static Logger log = Logger.getLogger(CustomRocksDBConfig.class);
@Override
public void setConfig(String storeName, Options options, Map<String, Object> configs) {
BlockBasedTableConfig tableConfig = new BlockBasedTableConfig();
// Reducing default block cache size
tableConfig.setBlockCacheSize(blockCacheSize);
// Increasing the block size as default block size is only 4KB
tableConfig.setBlockSize(blockSize);
// Index and Filter block
tableConfig.setCacheIndexAndFilterBlocks(cacheIndexAndFilterBlock);
options.setTableFormatConfig(tableConfig);
options.setMaxWriteBufferNumber(2);
}
}
При настройке свойств StreamsConfig добавьте следующие свойства.
CustomRocksDBConfig.blockCacheSize = properties.get("blockCacheSize");
CustomRocksDBConfig.blockSize = properties.get("blockSize");
CustomRocksDBConfig.cacheIndexAndFilterBlock = properties.get("cacheIndexAndFilterBlock");
properties.put(StreamsConfig.ROCKSDB_CONFIG_SETTER_CLASS_CONFIG, CustomRocksDBConfig.class);
Нет необходимости перекомпилировать код!Он всегда будет читать значения из файла свойств времени выполнения.