using Dpz.Core.Public.Entity;

namespace Dpz.Core.Public.ViewModel.Request;

/// <summary>
/// 消息队列 Outbox 查询参数
/// </summary>
public class MessageOutboxRequest : PagingBaseRequest
{
    /// <summary>
    /// 关键字,匹配消息 ID、类型、路由、来源和错误信息
    /// </summary>
    public string? Keyword { get; set; }

    /// <summary>
    /// 消息状态
    /// </summary>
    public OutboxMessageStatus? Status { get; set; }

    /// <summary>
    /// 消息类型
    /// </summary>
    public string? MessageType { get; set; }

    /// <summary>
    /// Exchange 名称
    /// </summary>
    public string? Exchange { get; set; }

    /// <summary>
    /// 路由键
    /// </summary>
    public string? RoutingKey { get; set; }

    /// <summary>
    /// 消息来源
    /// </summary>
    public string? Source { get; set; }

    /// <summary>
    /// 创建开始时间
    /// </summary>
    public DateTime? StartTime { get; set; }

    /// <summary>
    /// 创建结束时间
    /// </summary>
    public DateTime? EndTime { get; set; }
}

/// <summary>
/// 导出消息队列 Outbox 查询参数
/// </summary>
public sealed class MessageOutboxExportRequest : MessageOutboxRequest
{
    /// <summary>
    /// 导出时固定第一页
    /// </summary>
    public override int PageIndex => 1;

    /// <summary>
    /// 导出时固定每页3000条记录
    /// </summary>
    public override int PageSize => 3000;
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

代码解释

这是一个用于消息队列 Outbox 模式的查询参数定义文件,包含两个请求类。

1. MessageOutboxRequest 类

这是一个基础的消息 Outbox 查询请求类,继承自 PagingBaseRequest(分页基类)。

主要属性:

  • Keyword: 关键字搜索字段,可以匹配消息ID、类型、路由、来源和错误信息等多个字段
  • Status: 消息状态筛选(类型为 OutboxMessageStatus 枚举)
  • MessageType: 消息类型筛选
  • Exchange: Exchange(交换机)名称筛选
  • RoutingKey: 路由键筛选
  • Source: 消息来源筛选
  • StartTime: 创建时间范围的起始时间
  • EndTime: 创建时间范围的结束时间

所有属性都是可空类型(?),意味着它们都是可选的查询条件。

2. MessageOutboxExportRequest 类

这是专门用于导出功能的请求类,继承自 MessageOutboxRequest,使用 sealed 关键字防止被进一步继承。

特点:

  • PageIndex: 重写基类的分页索引,固定为第1页
  • PageSize: 重写基类的每页大小,固定为3000条记录

设计目的:

导出功能通常需要一次性获取大量数据,因此:

  • 固定从第一页开始
  • 设置较大的每页记录数(3000条)
  • 继承所有筛选条件,保证导出的数据和查询的数据筛选条件一致

应用场景

这种设计模式常用于:

  • Outbox 模式:确保消息最终一致性的分布式事务模式
  • 消息追踪:查询和监控已发送/待发送的消息
  • 数据导出:将符合条件的消息记录导出为文件
评论加载中...