feat: enforce jetstream ack and redelivery semantics

This commit is contained in:
Joseph Doherty
2026-02-23 06:09:26 -05:00
parent fecb51095f
commit d3aad48096
7 changed files with 104 additions and 7 deletions

View File

@@ -0,0 +1,24 @@
namespace NATS.Server.JetStream.Consumers;
public sealed class AckProcessor
{
private readonly Dictionary<ulong, DateTime> _pending = new();
public void Register(ulong sequence, int ackWaitMs)
{
_pending[sequence] = DateTime.UtcNow.AddMilliseconds(Math.Max(ackWaitMs, 1));
}
public ulong? NextExpired()
{
foreach (var (seq, deadline) in _pending)
{
if (DateTime.UtcNow >= deadline)
return seq;
}
return null;
}
public bool HasPending => _pending.Count > 0;
}