Redisson node could be created with existing Redisson instance

pull/605/head
Nikita 9 years ago
parent cd4c710355
commit 0e5e4014f7

@ -46,15 +46,22 @@ public class RedissonNode {
private static final Logger log = LoggerFactory.getLogger(RedissonNode.class); private static final Logger log = LoggerFactory.getLogger(RedissonNode.class);
private ExecutorService executor; private ExecutorService executor;
private boolean hasRedissonInstance;
private RedissonClient redisson; private RedissonClient redisson;
private final RedissonNodeConfig config; private final RedissonNodeConfig config;
private final String id; private final String id;
private InetSocketAddress remoteAddress; private InetSocketAddress remoteAddress;
private InetSocketAddress localAddress; private InetSocketAddress localAddress;
private RedissonNode(RedissonNodeConfig config) { private RedissonNode(RedissonNodeConfig config, Redisson redisson) {
this.config = new RedissonNodeConfig(config); this.config = new RedissonNodeConfig(config);
this.id = generateId(); this.id = generateId();
this.redisson = redisson;
hasRedissonInstance = redisson == null;
}
public RedissonClient getRedisson() {
return redisson;
} }
public InetSocketAddress getLocalAddress() { public InetSocketAddress getLocalAddress() {
@ -122,7 +129,9 @@ public class RedissonNode {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
} }
if (hasRedissonInstance) {
redisson.shutdown(); redisson.shutdown();
}
log.info("Redisson node has been shutdown successfully"); log.info("Redisson node has been shutdown successfully");
} }
@ -136,12 +145,14 @@ public class RedissonNode {
executor = Executors.newFixedThreadPool(config.getExecutorServiceThreads(), new RedissonThreadFactory()); executor = Executors.newFixedThreadPool(config.getExecutorServiceThreads(), new RedissonThreadFactory());
} }
if (hasRedissonInstance) {
redisson = Redisson.create(config); redisson = Redisson.create(config);
}
retrieveAdresses(); retrieveAdresses();
if (config.getRedissonNodeInitializer() != null) { if (config.getRedissonNodeInitializer() != null) {
config.getRedissonNodeInitializer().onStartup(redisson, this); config.getRedissonNodeInitializer().onStartup(this);
} }
for (Entry<String, Integer> entry : config.getExecutorServiceWorkers().entrySet()) { for (Entry<String, Integer> entry : config.getExecutorServiceWorkers().entrySet()) {
@ -185,11 +196,22 @@ public class RedissonNode {
* @return RedissonNode instance * @return RedissonNode instance
*/ */
public static RedissonNode create(RedissonNodeConfig config) { public static RedissonNode create(RedissonNodeConfig config) {
return create(config, null);
}
/**
* Create Redisson node instance with provided config and Redisson instance
*
* @param config
* @param redisson
* @return RedissonNode instance
*/
public static RedissonNode create(RedissonNodeConfig config, Redisson redisson) {
if (config.getExecutorServiceWorkers().isEmpty()) { if (config.getExecutorServiceWorkers().isEmpty()) {
throw new IllegalArgumentException("Executor service workers are empty"); throw new IllegalArgumentException("Executor service workers are empty");
} }
return new RedissonNode(config); return new RedissonNode(config, redisson);
} }
} }

@ -27,9 +27,8 @@ public interface RedissonNodeInitializer {
/** /**
* Invoked during Redisson Node startup * Invoked during Redisson Node startup
* *
* @param redisson
* @param redissonNode * @param redissonNode
*/ */
void onStartup(RedissonClient redisson, RedissonNode redissonNode); void onStartup(RedissonNode redissonNode);
} }

Loading…
Cancel
Save