namespace Dpz.Core.MessageQueue.Abstractions;

/// <summary>
/// 消息原始重发接口,供 Outbox 后台重试服务使用,绕过 Outbox 装饰器直接将已存储的
/// JSON 载荷发布到 RabbitMQ。
/// </summary>
public interface IMessageOutboxRetryPublisher
{
    /// <summary>
    /// 将原始 JSON 载荷发布到指定 Exchange 和路由键,不经过序列化和 Outbox 记录写入。
    /// </summary>
    /// <param name="exchange">目标 Exchange 名称</param>
    /// <param name="routingKey">路由键</param>
    /// <param name="messageId">消息唯一标识,用于设置消息属性</param>
    /// <param name="jsonPayload">JSON 序列化的消息载荷</param>
    /// <param name="cancellationToken">取消令牌</param>
    Task PublishRawAsync(
        string exchange,
        string routingKey,
        string messageId,
        string jsonPayload,
        CancellationToken cancellationToken = default
    );
}
评论加载中...