Class DiscordMessageBuffer
SQLite WAL-backed durable FIFO queue for ChannelMessage ingestion. All writes are transactional; the WAL ensures durability even on crash/power loss.
public sealed class DiscordMessageBuffer : IAsyncDisposable
- Inheritance
-
DiscordMessageBuffer
- Implements
- Inherited Members
Constructors
DiscordMessageBuffer(string)
public DiscordMessageBuffer(string dataDirectory)
Parameters
dataDirectorystring
Methods
CompleteAsync(long, CancellationToken)
Marks a message as permanently completed (removed from the processing pipeline).
public Task CompleteAsync(long rowId, CancellationToken ct = default)
Parameters
rowIdlongctCancellationToken
Returns
DequeueAsync(CancellationToken)
Atomically claims the next pending message for processing. Returns null if the queue is empty or all messages are waiting for their backoff.
public Task<QueuedChannelMessage?> DequeueAsync(CancellationToken ct = default)
Parameters
Returns
DisposeAsync()
Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources asynchronously.
public ValueTask DisposeAsync()
Returns
- ValueTask
A task that represents the asynchronous dispose operation.
EnqueueAsync(ChannelMessage, CancellationToken)
Enqueues a ChannelMessage immediately.
Returns the assigned row_id.
public Task<long> EnqueueAsync(ChannelMessage msg, CancellationToken ct = default)
Parameters
msgChannelMessagectCancellationToken
Returns
FailAsync(long, string, CancellationToken)
Marks a message as permanently failed (no more retries).
public Task FailAsync(long rowId, string error, CancellationToken ct = default)
Parameters
rowIdlongerrorstringctCancellationToken
Returns
GetPendingMessagesAsync(int, CancellationToken)
Returns all non-completed messages ordered by enqueue time.
public Task<IReadOnlyList<QueuedChannelMessage>> GetPendingMessagesAsync(int limit = 100, CancellationToken ct = default)
Parameters
limitintctCancellationToken
Returns
GetStatsAsync(CancellationToken)
Returns queue depth broken down by status.
public Task<QueueStats> GetStatsAsync(CancellationToken ct = default)
Parameters
Returns
InitializeAsync(CancellationToken)
Initializes the DB schema (idempotent — safe to call multiple times).
public Task InitializeAsync(CancellationToken ct = default)
Parameters
Returns
PurgeAsync(TimeSpan, bool, CancellationToken)
Purges completed (and optionally failed) messages older than maxAge.
public Task<long> PurgeAsync(TimeSpan maxAge, bool includeFailed = false, CancellationToken ct = default)
Parameters
maxAgeTimeSpanincludeFailedboolctCancellationToken
Returns
ResetAsync(long, CancellationToken)
Resets a failed or pending message back to pending for immediate retry.
public Task ResetAsync(long rowId, CancellationToken ct = default)
Parameters
rowIdlongctCancellationToken
Returns
RetryAsync(long, string, CancellationToken)
Records a transient failure and schedules the message for retry (if attempts remain).
public Task RetryAsync(long rowId, string error, CancellationToken ct = default)
Parameters
rowIdlongerrorstringctCancellationToken