diff --git a/src/main/java/com/mengcraft/simpleorm/RedisWrapper.java b/src/main/java/com/mengcraft/simpleorm/RedisWrapper.java index be4c02a..656c286 100644 --- a/src/main/java/com/mengcraft/simpleorm/RedisWrapper.java +++ b/src/main/java/com/mengcraft/simpleorm/RedisWrapper.java @@ -3,6 +3,7 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import lombok.Cleanup; +import lombok.NonNull; import lombok.SneakyThrows; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.BinaryJedisPubSub; @@ -17,6 +18,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.function.Function; @@ -142,12 +144,23 @@ private static class MessageFilter extends BinaryJedisPubSub { @SneakyThrows public void onMessage(byte[] channel, byte[] message) { - Collection> allconsumer = handled.get(new String(channel, "utf8")); - if (allconsumer.isEmpty()) { + Collection> allConsumer = handled.get(new String(channel, StandardCharsets.UTF_8)); + if (allConsumer.isEmpty()) { return; } - for (Consumer consumer : allconsumer) consumer.accept(message); + for (Consumer consumer : allConsumer) consumer.accept(message); + } + + @Override + @SneakyThrows + public void subscribe(@NonNull byte[]... channels) { + try { + super.subscribe(channels); + } catch (NullPointerException e) { + TimeUnit.MILLISECONDS.sleep(0); + subscribe(channels); + } } } }