diff --git a/redisson/src/main/java/org/redisson/client/handler/CommandPubSubDecoder.java b/redisson/src/main/java/org/redisson/client/handler/CommandPubSubDecoder.java index ed0044be9..1afbc36f0 100644 --- a/redisson/src/main/java/org/redisson/client/handler/CommandPubSubDecoder.java +++ b/redisson/src/main/java/org/redisson/client/handler/CommandPubSubDecoder.java @@ -209,12 +209,20 @@ public class CommandPubSubDecoder extends CommandDecoder { return commandData.getCommand().getReplayMultiDecoder(); } else if ("message".equals(command)) { byte[] channelName = (byte[]) parts.get(1); - return entries.get(new ChannelName(channelName)).getDecoder(); + PubSubEntry entry = entries.get(new ChannelName(channelName)); + if (entry == null) { + return null; + } + return entry.getDecoder(); } else if ("pmessage".equals(command)) { byte[] patternName = (byte[]) parts.get(1); - return entries.get(new ChannelName(patternName)).getDecoder(); + PubSubEntry entry = entries.get(new ChannelName(patternName)); + if (entry == null) { + return null; + } + return entry.getDecoder(); } else if ("pong".equals(command)) { - return new ListObjectDecoder(0); + return new ListObjectDecoder<>(0); } return data.getCommand().getReplayMultiDecoder();