diff --git a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java index 16ae3f62..005af50c 100644 --- a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java +++ b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java @@ -594,6 +594,25 @@ public class DatabaseStore { return null; } + void deleteMessage(long messageId) { + String sql = "delete from " + MessageShardingUtil.getMessageTable(messageId) + " where _mid = ?"; + Connection connection = null; + PreparedStatement statement = null; + try { + connection = DBUtil.getConnection(); + statement = connection.prepareStatement(sql); + statement.setLong(1, messageId); + + int count = statement.executeUpdate(); + LOG.info("Update rows {}", count); + } catch (SQLException e) { + e.printStackTrace(); + Utility.printExecption(LOG, e); + } finally { + DBUtil.closeDB(connection, statement); + } + } + List loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count) { List messages = loadRemoteMessagesFromTable(user, conversation, beforeUid, count, MessageShardingUtil.getMessageTable(beforeUid)); if (messages != null && messages.size() < count) { diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index a5aead0d..e7fb0d1b 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -1235,6 +1235,8 @@ public class MemoryMessagesStore implements IMessagesStore { message = message.toBuilder().setContent(message.getContent().toBuilder().setContent(operatorId).setType(80).clearSearchableContent().setData(ByteString.copyFrom(new StringBuffer().append(messageUid).toString().getBytes())).build()).build(); messageBundle.setMessage(message); + databaseStore.deleteMessage(messageUid); + mIMap.put(messageUid, messageBundle, 7, TimeUnit.DAYS); return ErrorCode.ERROR_CODE_SUCCESS; } else {