private void DeleteConsumedMessage() { foreach (var topicQueues in _topicQueueDict.Values) { foreach (var queue in topicQueues) { var consumedOffset = _offsetManager.GetMinOffset(queue.Topic, queue.QueueId); for (var index = queue.MaxRemovedOffset + 1; index <= consumedOffset; index++) { var queueItem = queue.RemoveQueueItem(index); if (queueItem != null) { _messageStore.RemoveMessage(queueItem.MessageOffset); } } var maxQueueOffset = consumedOffset; if (maxQueueOffset >= queue.CurrentOffset) { maxQueueOffset = queue.CurrentOffset; } _messageStore.DeleteMessages(queue.Topic, queue.QueueId, maxQueueOffset); } } }