diff --git a/redisson/src/main/java/org/redisson/RedissonNode.java b/redisson/src/main/java/org/redisson/RedissonNode.java index 6be3c2038..9031a4cba 100644 --- a/redisson/src/main/java/org/redisson/RedissonNode.java +++ b/redisson/src/main/java/org/redisson/RedissonNode.java @@ -22,6 +22,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +import org.redisson.api.RedissonClient; import org.redisson.config.RedissonNodeConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,6 +104,11 @@ public class RedissonNode { } redisson = Redisson.create(config); + + if (config.getRedissonNodeInitializer() != null) { + config.getRedissonNodeInitializer().onStartup(redisson); + } + for (Entry entry : config.getExecutorServiceWorkers().entrySet()) { String name = entry.getKey(); int workers = entry.getValue(); diff --git a/redisson/src/main/java/org/redisson/api/RedissonNodeInitializer.java b/redisson/src/main/java/org/redisson/api/RedissonNodeInitializer.java new file mode 100644 index 000000000..a1ab07007 --- /dev/null +++ b/redisson/src/main/java/org/redisson/api/RedissonNodeInitializer.java @@ -0,0 +1,17 @@ +package org.redisson.api; + +/** + * + * @author Nikita Koksharov + * + */ +public interface RedissonNodeInitializer { + + /** + * Invoked during Redisson Node startup + * + * @param redisson + */ + void onStartup(RedissonClient redisson); + +} diff --git a/redisson/src/main/java/org/redisson/config/RedissonNodeConfig.java b/redisson/src/main/java/org/redisson/config/RedissonNodeConfig.java index e780097c3..ede251bae 100644 --- a/redisson/src/main/java/org/redisson/config/RedissonNodeConfig.java +++ b/redisson/src/main/java/org/redisson/config/RedissonNodeConfig.java @@ -20,6 +20,8 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import org.redisson.api.RedissonNodeInitializer; + /** * * @author Nikita Koksharov @@ -27,6 +29,7 @@ import java.util.Map; */ public class RedissonNodeConfig extends Config { + private RedissonNodeInitializer redissonNodeInitializer; private int executorServiceThreads = 0; private Map executorServiceWorkers = new HashMap(); @@ -42,6 +45,7 @@ public class RedissonNodeConfig extends Config { super(oldConf); this.executorServiceThreads = oldConf.executorServiceThreads; this.executorServiceWorkers = new HashMap(oldConf.executorServiceWorkers); + this.redissonNodeInitializer = oldConf.redissonNodeInitializer; } /** @@ -78,6 +82,21 @@ public class RedissonNodeConfig extends Config { return executorServiceWorkers; } + public RedissonNodeInitializer getRedissonNodeInitializer() { + return redissonNodeInitializer; + } + + /** + * Redisson node initializer + * + * @param redissonNodeInitializer + * @return + */ + public RedissonNodeConfig setRedissonNodeInitializer(RedissonNodeInitializer redissonNodeInitializer) { + this.redissonNodeInitializer = redissonNodeInitializer; + return this; + } + /** * Read config object stored in JSON format from File *