using Dpz.Core.Entity.Base;
namespace Dpz.Core.Public.ViewModel.Messages;
/// <summary>
/// 新闻文章消息
/// 约定路由:
/// - Exchange: dpz.news.exchange
/// - Queue: dpz.news.article.queue
/// - RoutingKey: news.article.#
/// </summary>
public class NewsArticleMessage : MessageBase
{
/// <summary>
/// 文章标题
/// </summary>
public required string Title { get; set; }
/// <summary>
/// 文章内容(Markdown格式)
/// </summary>
public required string Markdown { get; set; }
/// <summary>
/// 文章简介
/// </summary>
public string? Introduction { get; set; }
/// <summary>
/// 来源URL
/// </summary>
public required string From { get; set; }
/// <summary>
/// 发布时间
/// </summary>
public required DateTime PublishTime { get; set; } = DateTime.Now;
/// <summary>
/// 文章标签
/// </summary>
public List<string> Tags { get; set; } = [];
/// <summary>
/// 作者信息
/// </summary>
public required VmUserInfo Author { get; set; }
/// <summary>
/// 广告权重(0-1之间)
/// </summary>
public double AdWeight { get; set; }
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这是一个用于消息队列的新闻文章消息类,基于C#语言编写。让我详细解释一下这个代码:
类的基本信息
public class NewsArticleMessage : MessageBase
- 这是一个名为
NewsArticleMessage的公共类 - 继承自
MessageBase基类(来自Dpz.Core.Entity.Base命名空间) - 用于在消息队列系统中传递新闻文章相关的数据
消息队列路由约定
根据注释,这个消息类遵循以下RabbitMQ路由约定:
- Exchange:
dpz.news.exchange- 交换器名称 - Queue:
dpz.news.article.queue- 队列名称 - RoutingKey:
news.article.#- 路由键模式(支持通配符)
属性详解
必需属性(required)
public required string Title { get; set; } // 文章标题
public required string Markdown { get; set; } // Markdown格式的文章内容
public required string From { get; set; } // 来源URL
public required DateTime PublishTime { get; set; } // 发布时间(默认当前时间)
public required VmUserInfo Author { get; set; } // 作者信息
可选属性
public string? Introduction { get; set; } // 文章简介(可空)
public List<string> Tags { get; set; } = []; // 文章标签列表(默认空列表)
public double AdWeight { get; set; } // 广告权重(0-1之间的数值)
设计特点
- 类型安全: 使用
required关键字确保必要字段在对象创建时必须提供 - 可空性明确: 使用
?明确标识可空字段 - 默认值: 为集合类型和时间字段提供合理的默认值
- 业务语义: 包含了新闻文章的核心要素(标题、内容、作者、发布时间等)
- 扩展性: 支持标签系统和广告权重等扩展功能
这个类主要用于微服务架构中不同服务间传递新闻文章数据,通过消息队列实现异步处理和解耦。
评论加载中...