feat: add jetstream publish preconditions and dedupe

This commit is contained in:
Joseph Doherty
2026-02-23 06:05:01 -05:00
parent d73e7e2f88
commit 6825839191
4 changed files with 61 additions and 4 deletions

View File

@@ -0,0 +1,25 @@
using System.Collections.Concurrent;
namespace NATS.Server.JetStream.Publish;
public sealed class PublishPreconditions
{
private readonly ConcurrentDictionary<string, ulong> _dedupe = new(StringComparer.Ordinal);
public bool IsDuplicate(string? msgId, out ulong existingSequence)
{
existingSequence = 0;
if (string.IsNullOrEmpty(msgId))
return false;
return _dedupe.TryGetValue(msgId, out existingSequence);
}
public void Record(string? msgId, ulong sequence)
{
if (string.IsNullOrEmpty(msgId))
return;
_dedupe[msgId] = sequence;
}
}