From 1fb3c757e2b36a96bc933e426d2131c58d9189c7 Mon Sep 17 00:00:00 2001 From: heavyrain lee Date: Sun, 21 Jul 2019 22:29:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=92=A4=E5=9B=9E=E6=B6=88=E6=81=AF=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=85=88=E5=88=A0=E9=99=A4=E6=97=A7=E6=B6=88=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E5=86=8D=E6=8F=92=E5=85=A5=E6=96=B0=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moquette/persistence/DatabaseStore.java | 19 +++++++++++++++++++ .../persistence/MemoryMessagesStore.java | 2 ++ 2 files changed, 21 insertions(+) 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 {