From 74f1a4557dcaeb0644318a702abfdf0f83a45495 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Tue, 26 Mar 2024 19:00:55 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=B0=86=20jedis=20=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E9=A2=91=E9=81=93=E5=A4=84=E7=90=86=E4=BB=A3=E7=A0=81=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E8=87=B3=E5=BC=82=E6=AD=A5=E7=BA=BF=E7=A8=8B=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mc/plugin/ball/common/api/BallAPI.java | 26 +++++++------ .../common/listener/BallRedisListener.java | 37 ++++++++++--------- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java index d2a3716..842449b 100644 --- a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java +++ b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java @@ -506,26 +506,28 @@ public abstract class BallAPI { *
* 会自动加上 config 中设置的频道前缀 * - * @param channel 频道名称 + * @param channels 频道名称 */ - public void subscribe(@NotNull String... channel) { - for (int i = 0; i < channel.length; i++) { - channel[i] = ballConfig.getChannelPrefix() + channel[i]; + public void subscribe(@NotNull String... channels) { + for (int i = 0; i < channels.length; i++) { + channels[i] = ballConfig.getChannelPrefix() + channels[i]; } - CoreAPI.getInstance().getExecutorService().submit( - () -> redisSub.subscribe(BallRedisListener.INSTANCE, channel) - ); + subscribeRaw(channels); } /** * 忽略频道前缀配置,订阅 redis 消息频道 * - * @param channel 频道名称 + * @param channels 频道名称 */ - public void subscribeRaw(@NotNull String... channel) { - CoreAPI.getInstance().getExecutorService().submit( - () -> redisSub.subscribe(BallRedisListener.INSTANCE, channel) - ); + public void subscribeRaw(@NotNull String... channels) { + CoreAPI.getInstance().getExecutorService().submit(() -> { + try { + redisSub.subscribe(BallRedisListener.INSTANCE, channels); + } catch (Exception | Error e) { + e.printStackTrace(); + } + }); } /** diff --git a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/listener/BallRedisListener.java b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/listener/BallRedisListener.java index 8a51458..2b5faca 100644 --- a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/listener/BallRedisListener.java +++ b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/listener/BallRedisListener.java @@ -15,23 +15,26 @@ public class BallRedisListener extends JedisPubSub { @Override public void onMessage(String channel, String message) { - if (channel.startsWith(BallAPI.getInstance().getBallConfig().getChannelPrefix())) { - channel = channel.substring(BallAPI.getInstance().getBallConfig().getChannelPrefix().length()); - } - BallMessage ballMessage = CoreAPI.getInstance().getGson().fromJson(message, BallMessage.class); - BallAPI ballAPI = BallAPI.getInstance(); - EventBus eventBus = ballAPI.getEventBus(); - if (ballMessage.getReceiverType() != null && ballMessage.getReceiverType() != ballAPI.getLocalServerInfo().getType()) { - return; - } - if (ballMessage.getReceiverID() != null && !ballAPI.isLocalServer(ballMessage.getReceiverID())) { - return; - } - try { - eventBus.post(new MessageReceivedEvent(channel, ballMessage)); - } catch (Exception | Error e) { - e.printStackTrace(); - } + CoreAPI.getInstance().getExecutorService().submit(() -> { + try { + String finalChannel = channel; + if (finalChannel.startsWith(BallAPI.getInstance().getBallConfig().getChannelPrefix())) { + finalChannel = finalChannel.substring(BallAPI.getInstance().getBallConfig().getChannelPrefix().length()); + } + BallMessage ballMessage = CoreAPI.getInstance().getGson().fromJson(message, BallMessage.class); + BallAPI ballAPI = BallAPI.getInstance(); + EventBus eventBus = ballAPI.getEventBus(); + if (ballMessage.getReceiverType() != null && ballMessage.getReceiverType() != ballAPI.getLocalServerInfo().getType()) { + return; + } + if (ballMessage.getReceiverID() != null && !ballAPI.isLocalServer(ballMessage.getReceiverID())) { + return; + } + eventBus.post(new MessageReceivedEvent(finalChannel, ballMessage)); + } catch (Exception | Error e) { + e.printStackTrace(); + } + }); } @Override