示例#1
0
 public void RemoveOffset(MessageOffset messageOffset)
 {
     if (CommitPerMessage)
     {
         CommitOffset(messageOffset);
     }
     else
     {
         lock (_removeOffsetLock)
         {
             if (Offsets.Remove(messageOffset.Offset))
             {
                 RemovedMessageOffsets.Add(messageOffset.Offset, messageOffset);
                 if (Offsets.Count > 0)
                 {
                     ConsumedOffset = Offsets.First() - 1;
                 }
                 else
                 {
                     ConsumedOffset = LastOffset;
                 }
             }
             if (ConsumedOffset > LastCommittedOffset)
             {
                 if (RemovedMessageOffsets.TryRemoveBeforeKey(ConsumedOffset, out var currentMessageOffset))
                 {
                     CommitOffset(currentMessageOffset);
                 }
                 LastCommittedOffset = ConsumedOffset;
             }
         }
     }
 }
示例#2
0
 public void RemoveOffset(MessageOffset messageOffset)
 {
     _logger.LogDebug($"{messageOffset.Broker}.{messageOffset.Topic}.{messageOffset.Partition} remove offset {messageOffset.Offset} remain:{Offsets.Count}");
     if (CommitPerMessage)
     {
         CommitOffset(messageOffset);
     }
     else
     {
         lock (_removeOffsetLock)
         {
             if (Offsets.Remove(messageOffset.Offset))
             {
                 RemovedMessageOffsets.Add(messageOffset.Offset, messageOffset);
                 if (Offsets.Count > 0)
                 {
                     ConsumedOffset = Offsets.First() - 1;
                 }
                 else
                 {
                     ConsumedOffset = LastOffset;
                 }
             }
             if (ConsumedOffset > LastCommittedOffset)
             {
                 if (RemovedMessageOffsets.TryRemoveBeforeKey(ConsumedOffset, out var currentMessageOffset))
                 {
                     CommitOffset(currentMessageOffset);
                 }
                 LastCommittedOffset = ConsumedOffset;
             }
         }
     }
 }