namespace Dpz.Core.MessageQueue.Abstractions;

/// <summary>
/// 批次追踪服务接口
/// </summary>
public interface IBatchTracker
{
    /// <summary>
    /// 记录批次中的消息被消费
    /// </summary>
    /// <param name="batchId">批次ID</param>
    /// <param name="messageId">消息ID</param>
    /// <returns></returns>
    Task RecordMessageConsumedAsync(string batchId, string messageId);

    /// <summary>
    /// 检查批次是否完成
    /// </summary>
    /// <param name="batchId">批次ID</param>
    /// <param name="expectedTotal">预期的消息总数</param>
    /// <returns>是否完成</returns>
    Task<bool> IsBatchCompletedAsync(string batchId, int expectedTotal);

    /// <summary>
    /// 获取批次的消费进度
    /// </summary>
    /// <param name="batchId">批次ID</param>
    /// <returns>已消费的消息数</returns>
    Task<int> GetBatchProgressAsync(string batchId);

    /// <summary>
    /// 清理批次记录
    /// </summary>
    /// <param name="batchId">批次ID</param>
    /// <returns></returns>
    Task CleanupBatchAsync(string batchId);
}
评论加载中...