fix(ball-common): 修复 jedis 线程占用问题
This commit is contained in:
@@ -105,6 +105,7 @@ public abstract class BallAPI {
|
||||
}
|
||||
|
||||
protected void enable() throws SQLException, InterruptedException {
|
||||
CoreAPI.getInstance().getExecutorService().submit(() -> redisSub.subscribe(BallRedisListener.INSTANCE, BALL_CHANNEL));
|
||||
try (Jedis jedis = CoreAPI.getInstance().getJedisPool().getResource()) {
|
||||
String key = "HamsterBall:ServerInfo:" + localServerInfo.getId();
|
||||
if (jedis.exists(key)) {
|
||||
@@ -179,7 +180,6 @@ public abstract class BallAPI {
|
||||
}
|
||||
getLogger().info("从数据库中加载了 " + allServerInfo.size() + " 条服务器信息");
|
||||
getLogger().info("从数据库中加载了 " + allPlayerInfo.size() + " 条玩家信息");
|
||||
subscribeRaw(BALL_CHANNEL);
|
||||
}
|
||||
|
||||
protected void disable() throws SQLException, InterruptedException {
|
||||
@@ -521,13 +521,14 @@ public abstract class BallAPI {
|
||||
* @param channels 频道名称
|
||||
*/
|
||||
public void subscribeRaw(@NotNull String... channels) {
|
||||
CoreAPI.getInstance().getExecutorService().submit(() -> {
|
||||
try {
|
||||
redisSub.subscribe(BallRedisListener.INSTANCE, channels);
|
||||
} catch (Exception | Error e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
BallRedisListener.INSTANCE.subscribe(channels);
|
||||
// CoreAPI.getInstance().getExecutorService().submit(() -> {
|
||||
// try {
|
||||
// redisSub.subscribe(BallRedisListener.INSTANCE, channels);
|
||||
// } catch (Exception | Error e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// });
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -536,9 +537,10 @@ public abstract class BallAPI {
|
||||
* @param patterns 频道名称正则表达式
|
||||
*/
|
||||
public void subscribePatterns(@NotNull String patterns) {
|
||||
CoreAPI.getInstance().getExecutorService().submit(
|
||||
() -> redisSub.psubscribe(BallRedisListener.INSTANCE, patterns)
|
||||
);
|
||||
BallRedisListener.INSTANCE.psubscribe(patterns);
|
||||
// CoreAPI.getInstance().getExecutorService().submit(
|
||||
// () -> redisSub.psubscribe(BallRedisListener.INSTANCE, patterns)
|
||||
// );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -546,22 +548,22 @@ public abstract class BallAPI {
|
||||
* <p>
|
||||
* 会自动加上 config 中设置的频道前缀
|
||||
*
|
||||
* @param channel 频道名称
|
||||
* @param channels 频道名称
|
||||
*/
|
||||
public void unsubscribe(@NotNull String... channel) {
|
||||
for (int i = 0; i < channel.length; i++) {
|
||||
channel[i] = ballConfig.getChannelPrefix() + channel[i];
|
||||
public void unsubscribe(@NotNull String... channels) {
|
||||
for (int i = 0; i < channels.length; i++) {
|
||||
channels[i] = ballConfig.getChannelPrefix() + channels[i];
|
||||
}
|
||||
BallRedisListener.INSTANCE.unsubscribe(channel);
|
||||
unsubscribeRaw(channels);
|
||||
}
|
||||
|
||||
/**
|
||||
* 忽略频道前缀配置,取消订阅 redis 消息频道
|
||||
*
|
||||
* @param channel 频道名称
|
||||
* @param channels 频道名称
|
||||
*/
|
||||
public void unsubscribeIgnorePrefix(@NotNull String... channel) {
|
||||
BallRedisListener.INSTANCE.unsubscribe(channel);
|
||||
public void unsubscribeRaw(@NotNull String... channels) {
|
||||
BallRedisListener.INSTANCE.unsubscribe(channels);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user