feat: implement jetstream pull consumer fetch

This commit is contained in:
Joseph Doherty
2026-02-23 06:07:02 -05:00
parent 40b940b1fd
commit 9a0de19c2d
4 changed files with 76 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
using System.Text;
using NATS.Server.JetStream;
using NATS.Server.JetStream.Api;
using NATS.Server.JetStream.Consumers;
using NATS.Server.JetStream.Models;
using NATS.Server.JetStream.Publish;
@@ -38,6 +39,13 @@ internal sealed class JetStreamApiFixture : IAsyncDisposable
return fixture;
}
public static async Task<JetStreamApiFixture> StartWithPullConsumerAsync()
{
var fixture = await StartWithStreamAsync("ORDERS", "orders.*");
_ = await fixture.CreateConsumerAsync("ORDERS", "PULL", "orders.created");
return fixture;
}
public Task<PubAck> PublishAndGetAckAsync(string subject, string payload, string? msgId = null, bool expectError = false)
{
if (_publisher.TryCapture(subject, Encoding.UTF8.GetBytes(payload), msgId, out var ack))
@@ -71,5 +79,10 @@ internal sealed class JetStreamApiFixture : IAsyncDisposable
return response.ConsumerInfo ?? throw new InvalidOperationException("Consumer not found.");
}
public Task<PullFetchBatch> FetchAsync(string stream, string durableName, int batch)
{
return _consumerManager.FetchAsync(stream, durableName, batch, _streamManager, default).AsTask();
}
public ValueTask DisposeAsync() => ValueTask.CompletedTask;
}