using Dpz.Core.Entity.Base;
namespace Dpz.Core.MessageQueue.Abstractions;
/// <summary>
/// 消息发布者接口
/// </summary>
/// <typeparam name="TMessage">消息类型</typeparam>
public interface IMessagePublisher<in TMessage>
where TMessage : MessageBase
{
/// <summary>
/// 发布单条消息
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="routingKey">路由键(可选,不指定则使用约定规则)</param>
/// <param name="cancellationToken">取消令牌</param>
Task PublishAsync(
TMessage message,
string? routingKey = null,
CancellationToken cancellationToken = default
);
/// <summary>
/// 批量发布消息
/// </summary>
/// <param name="messages">消息列表</param>
/// <param name="routingKey">路由键(可选,不指定则使用约定规则)</param>
/// <param name="cancellationToken">取消令牌</param>
Task PublishBatchAsync(
IEnumerable<TMessage> messages,
string? routingKey = null,
CancellationToken cancellationToken = default
);
}
评论加载中...