namespace PasteApeart.Application.Contracts
{
/// <summary>
///
/// </summary>
public interface IEventModel
{
/// <summary>
/// 延迟 秒
/// </summary>
long ExpireSecond { get; set; }
/// <summary>
/// 截止 时间戳秒
/// </summary>
long ExpireTime { get; set; }
/// <summary>
/// 对象名称
/// </summary>
string EventName { get; set; }
}
/// <summary>
///
/// </summary>
public abstract class AbsEventModel : IEventModel
{
/// <summary>
/// 延迟 秒
/// </summary>
public long ExpireSecond { get; set; }
/// <summary>
/// 截止 时间戳秒
/// </summary>
public long ExpireTime { get; set; }
/// <summary>
/// 对象名称 不需要外部赋值,在发送消息的时候会统一处理,其实就是Type.Name
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 排重键 写入格式要包含:id再使用ToAutoStartTaskMutexAsync的扩展的时候会进行替换,基于实际情况设定
/// </summary>
public string MutexKey { get; set; }
/// <summary>
/// 排重值 主要用途在于任务排重,比如有多个地方对一个订单进行了统计任务,比如你延迟5分钟,中途多次触发,这个val就修改了,执行的时候,判断是否是最新的,就能判定是否要执行了
/// </summary>
public string MutexVal { get; set; }
/// <summary>
/// 当前次数 每次运行的时候++
/// </summary>
public int RetryTime { get; set; }
/// <summary>
/// 最大重试次数 0表示一次性任务,一般都是一次性任务
/// </summary>
public int MaxRetryTime { get; set; }
/// <summary>
/// 重试模型 比如5s 30s 1m 5m 30m 1h还是比如1h 4h 8h 24h等,也就是重试的时候下一次啥时候执行,用哪个模型结算
/// </summary>
public string RetryModel { get; set; }
}
}