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

@@ -5,17 +5,20 @@ namespace NATS.Server.JetStream.Consumers;
public sealed class PushConsumerEngine
{
public void Enqueue(Queue<PushFrame> queue, StoredMessage message, ConsumerConfig config)
public void Enqueue(ConsumerHandle consumer, StoredMessage message)
{
queue.Enqueue(new PushFrame
consumer.PushFrames.Enqueue(new PushFrame
{
IsData = true,
Message = message,
});
if (config.HeartbeatMs > 0)
if (consumer.Config.AckPolicy == AckPolicy.Explicit)
consumer.AckProcessor.Register(message.Sequence, consumer.Config.AckWaitMs);
if (consumer.Config.HeartbeatMs > 0)
{
queue.Enqueue(new PushFrame
consumer.PushFrames.Enqueue(new PushFrame
{
IsHeartbeat = true,
});