我创建了一个使用 Jedis 库连接到 Redis 集群的 Storm 拓扑。Storm 组件总是期望 Redis 启动并运行,然后才连接到 Redis 并订阅事件。目前我们使用 Redis 的 pub-sub 策略。
下面的代码示例解释了我在 Storm 中的 Jedis Connectivity to for Redis。
try {
jedis.psubscribe(listener, pattern);
} catch(Exception ex) {
//catch statement here.
} finally {
pool.returnResource(jedis);
}
....
pool = new JedisPool(new JedisPoolConfig(), host, port); //redis host port
ListenerThread listener = new ListenerThread(queue, pool, pattern);
listener.start();
预期行为
一旦 Redis 死机并重新上线,Storm 有望识别 Redis 的状态。万一 Redis 死机并上线,它必须不需要重新启动。
实际行为
一旦 Redis 由于任何原因重新启动,我总是必须重新启动 Storm 拓扑,然后它才会开始侦听 Redis。
问题
Redis重启后如何让Storm监听并重新连接Redis?任何指导将不胜感激,即。文档,论坛答案。