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之间的数值)

设计特点

  1. 类型安全: 使用 required 关键字确保必要字段在对象创建时必须提供
  2. 可空性明确: 使用 ? 明确标识可空字段
  3. 默认值: 为集合类型和时间字段提供合理的默认值
  4. 业务语义: 包含了新闻文章的核心要素(标题、内容、作者、发布时间等)
  5. 扩展性: 支持标签系统和广告权重等扩展功能

这个类主要用于微服务架构中不同服务间传递新闻文章数据,通过消息队列实现异步处理和解耦。

评论加载中...