diff --git a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java index 49ac0f91..d9004c7b 100644 --- a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java +++ b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java @@ -3001,7 +3001,7 @@ public class DatabaseStore { rs = statement.executeQuery(); while (rs.next()) { - String value = rs.getString(index++); + String value = rs.getString(1); if (!StringUtil.isNullOrEmpty(value)) { out.add(value); } diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index edcb126e..e2ba1965 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -305,20 +305,19 @@ public class MemoryMessagesStore implements IMessagesStore { if (channelInfo != null) { notifyReceivers.add(fromUser); if (channelInfo.getOwner().equals(fromUser)) { - MultiMap listeners = hzInstance.getMultiMap(CHANNEL_LISTENERS); + Collection listeners = getChannelListener(message.getConversation().getTarget()); if (!StringUtil.isNullOrEmpty(message.getToUser())) { - if (listeners.values().contains(message.getToUser())) { + if (listeners.contains(message.getToUser())) { notifyReceivers.add(message.getToUser()); } } else if(message.getToList() != null && !message.getToList().isEmpty()) { - Collection ls = listeners.get(message.getConversation().getTarget()); for (String to:message.getToList()) { - if (ls.contains(to)) { + if (listeners.contains(to)) { notifyReceivers.add(to); } } } else { - notifyReceivers.addAll(listeners.get(message.getConversation().getTarget())); + notifyReceivers.addAll(listeners); } } else { if (StringUtil.isNullOrEmpty(channelInfo.getCallback()) || channelInfo.getAutomatic() == 0) { @@ -2614,6 +2613,8 @@ public class MemoryMessagesStore implements IMessagesStore { HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); MultiMap listeners = hzInstance.getMultiMap(CHANNEL_LISTENERS); + getChannelListener(channelId); + if (listen) { listeners.put(channelId, operator); } else {