Files
natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs

49 lines
1.8 KiB
C#

namespace NATS.Server.JetStream.Publish;
public sealed class PublishOptions
{
/// <summary>
/// Gets the idempotency token used to deduplicate retried publishes on the stream.
/// </summary>
public string? MsgId { get; init; }
/// <summary>
/// Gets the expected stream last sequence precondition for optimistic concurrency checks.
/// </summary>
public ulong ExpectedLastSeq { get; init; }
/// <summary>
/// Gets the expected last sequence for a specific subject when enforcing subject-level ordering.
/// </summary>
public ulong ExpectedLastSubjectSeq { get; init; }
/// <summary>
/// Gets the subject associated with <see cref="ExpectedLastSubjectSeq"/> precondition checks.
/// </summary>
public string? ExpectedLastSubjectSeqSubject { get; init; }
// Go: Nats-Batch-Id header — identifies which atomic batch this message belongs to.
/// <summary>
/// Gets the batch identifier used to group staged messages into a single commit set.
/// </summary>
public string? BatchId { get; init; }
// Go: Nats-Batch-Sequence header — 1-based position within the batch.
/// <summary>
/// Gets the 1-based position of this message within its JetStream publish batch.
/// </summary>
public ulong BatchSeq { get; init; }
// Go: Nats-Batch-Commit header — "1" or "eob" to commit, null/empty to stage only.
/// <summary>
/// Gets the batch commit marker signaling end-of-batch or explicit commit behavior.
/// </summary>
public string? BatchCommit { get; init; }
// Go: Nats-Expected-Last-Msg-Id header — unsupported inside a batch.
/// <summary>
/// Gets the expected last message id precondition used to guard against duplicate writes.
/// </summary>
public string? ExpectedLastMsgId { get; init; }
}