diff --git a/src/main/java/org/springframework/data/redis/listener/RedisMessageListenerContainer.java b/src/main/java/org/springframework/data/redis/listener/RedisMessageListenerContainer.java index f04588f47..5108adbec 100644 --- a/src/main/java/org/springframework/data/redis/listener/RedisMessageListenerContainer.java +++ b/src/main/java/org/springframework/data/redis/listener/RedisMessageListenerContainer.java @@ -639,19 +639,14 @@ public class RedisMessageListenerContainer implements InitializingBean, Disposab private void addListener(MessageListener listener, Collection topics) { - Assert.notNull(listener, "a valid listener is required"); - Assert.notEmpty(topics, "at least one topic is required"); + Assert.notNull(listener, "A valid listener is required"); + Assert.notEmpty(topics, "At least one topic is required"); List channels = new ArrayList<>(topics.size()); List patterns = new ArrayList<>(topics.size()); - // add listener mapping - Set set = listenerTopics.get(listener); - - if (set == null) { - set = new CopyOnWriteArraySet<>(); - listenerTopics.put(listener, set); - } + // safely lookup or add MessageListener to Topic mapping + Set set = listenerTopics.computeIfAbsent(listener, key -> new CopyOnWriteArraySet<>()); set.addAll(topics);