Table of Contents

Class DiscordMessageBuffer

Namespace
JD.AI.Channels.Queue
Assembly
JD.AI.Channels.Queue.dll

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

dataDirectory string

Methods

CompleteAsync(long, CancellationToken)

Marks a message as permanently completed (removed from the processing pipeline).

public Task CompleteAsync(long rowId, CancellationToken ct = default)

Parameters

rowId long
ct CancellationToken

Returns

Task

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

ct CancellationToken

Returns

Task<QueuedChannelMessage>

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

msg ChannelMessage
ct CancellationToken

Returns

Task<long>

FailAsync(long, string, CancellationToken)

Marks a message as permanently failed (no more retries).

public Task FailAsync(long rowId, string error, CancellationToken ct = default)

Parameters

rowId long
error string
ct CancellationToken

Returns

Task

GetPendingMessagesAsync(int, CancellationToken)

Returns all non-completed messages ordered by enqueue time.

public Task<IReadOnlyList<QueuedChannelMessage>> GetPendingMessagesAsync(int limit = 100, CancellationToken ct = default)

Parameters

limit int
ct CancellationToken

Returns

Task<IReadOnlyList<QueuedChannelMessage>>

GetStatsAsync(CancellationToken)

Returns queue depth broken down by status.

public Task<QueueStats> GetStatsAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<QueueStats>

InitializeAsync(CancellationToken)

Initializes the DB schema (idempotent — safe to call multiple times).

public Task InitializeAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task

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

maxAge TimeSpan
includeFailed bool
ct CancellationToken

Returns

Task<long>

ResetAsync(long, CancellationToken)

Resets a failed or pending message back to pending for immediate retry.

public Task ResetAsync(long rowId, CancellationToken ct = default)

Parameters

rowId long
ct CancellationToken

Returns

Task

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

rowId long
error string
ct CancellationToken

Returns

Task