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 模式:确保消息最终一致性的分布式事务模式
- 消息追踪:查询和监控已发送/待发送的消息
- 数据导出:将符合条件的消息记录导出为文件
AI 正在分析代码…
评论加载中...