namespace QYZH.InteractiveMagazine.PrintWorker.Consumers;

/// <summary>
/// 队列消费者接口。
/// </summary>
public interface IQueueConsumer
{
    /// <summary>
    /// 交换机名称。
    /// </summary>
    string Exchange { get; }

    /// <summary>
    /// 队列名称。
    /// </summary>
    string QueueName { get; }

    /// <summary>
    /// 路由键。
    /// </summary>
    string RoutingKey { get; }

    /// <summary>
    /// 处理消息。
    /// </summary>
    Task HandleAsync(byte[] message, CancellationToken cancellationToken = default);

    /// <summary>
    /// 处理消费异常。
    /// </summary>
    Task OnErrorAsync(byte[] message, Exception exception);
}
