avoid concurrent processing for the same key

This commit is contained in:
chrislu
2024-05-20 13:29:37 -07:00
parent a7d30d0705
commit 3148dec1f6
2 changed files with 12 additions and 0 deletions

View File

@@ -67,6 +67,14 @@ func (imt *InflightMessageTracker) GetOldest() int64 {
return imt.timestamps.Oldest()
}
// IsInflight returns true if the message with the key is inflight.
func (imt *InflightMessageTracker) IsInflight(key []byte) bool {
imt.mu.Lock()
defer imt.mu.Unlock()
_, found := imt.messages[string(key)]
return found
}
// RingBuffer represents a circular buffer to hold timestamps.
type RingBuffer struct {
buffer []int64