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

@@ -35,12 +35,15 @@ internal sealed class JetStreamApiFixture : IAsyncDisposable
return fixture;
}
public Task<PubAck> PublishAndGetAckAsync(string subject, string payload)
public Task<PubAck> PublishAndGetAckAsync(string subject, string payload, string? msgId = null, bool expectError = false)
{
if (_publisher.TryCapture(subject, Encoding.UTF8.GetBytes(payload), out var ack))
if (_publisher.TryCapture(subject, Encoding.UTF8.GetBytes(payload), msgId, out var ack))
return Task.FromResult(ack);
return Task.FromResult(new PubAck { ErrorCode = 404 });
if (expectError)
return Task.FromResult(new PubAck { ErrorCode = 404 });
throw new InvalidOperationException($"No stream matched subject '{subject}'.");
}
public Task<JetStreamApiResponse> RequestLocalAsync(string subject, string payload)