using Dpz.Core.Entity.Base;
using Dpz.Core.MessageQueue.Models;
namespace Dpz.Core.MessageQueue.Abstractions;
/// <summary>
/// 消息处理器接口
/// 实现此接口来定义如何处理特定类型的消息
/// </summary>
/// <typeparam name="TMessage">消息类型</typeparam>
public interface IMessageHandler<in TMessage>
where TMessage : MessageBase
{
/// <summary>
/// 处理消息
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>处理成功返回true,失败返回false(将触发重试)</returns>
Task<bool> HandleAsync(TMessage message, CancellationToken cancellationToken = default);
}
/// <summary>
/// 消息处理器接口
/// 实现此接口来定义如何处理特定类型的消息
/// </summary>
/// <typeparam name="TMessage">消息类型</typeparam>
/// <typeparam name="TResult"></typeparam>
public interface IMessageHandler<in TMessage, TResult>
where TMessage : MessageBase
where TResult : MessageHandlerResult
{
/// <summary>
/// 处理消息
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>处理结果</returns>
Task<TResult> HandleAsync(TMessage message, CancellationToken cancellationToken = default);
}
评论加载中...