using Dpz.Core.Entity.Base;
using Dpz.Core.Entity.Base.Image;

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; }

    /// <summary>
    /// 主图片元信息
    /// </summary>
    public ImageMetadata? MainImageMetadata { get; set; }

    /// <summary>
    /// 文章相关图片的元信息
    /// </summary>
    public List<ImageMetadata> Images { get; set; } = [];
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

代码解释

这是一个 C# 消息类定义,用于在消息队列系统中传递新闻文章数据。

主要组成部分:

1. 命名空间和引用

using Dpz.Core.Entity.Base;
using Dpz.Core.Entity.Base.Image;
namespace Dpz.Core.Public.ViewModel.Messages;
  • 引入了基础实体类和图片相关的类
  • 定义在消息视图模型的命名空间下

2. 类定义

public class NewsArticleMessage : MessageBase
  • 继承自 MessageBase,表明这是一个消息基类
  • 用于在系统间传递新闻文章信息

3. 消息队列路由约定(文档注释)

- Exchange: dpz.news.exchange(交换机名称)
- Queue: dpz.news.article.queue(队列名称)
- RoutingKey: news.article.#(路由键模式)

这是 RabbitMQ 或类似消息队列的配置约定。

4. 属性说明

属性类型说明特点
Titlestring文章标题必填(required)
Markdownstring文章内容(Markdown格式)必填
Introductionstring?文章简介可空
Fromstring来源URL必填
PublishTimeDateTime发布时间必填,默认当前时间
TagsList<string>文章标签集合默认空列表
AuthorVmUserInfo作者信息对象必填
AdWeightdouble广告权重范围0-1
MainImageMetadataImageMetadata?主图片元信息可空
ImagesList<ImageMetadata>文章相关图片列表默认空列表

使用场景

这个类主要用于:

  • 微服务之间传递新闻文章数据
  • 通过消息队列异步处理文章发布
  • 解耦文章创建和文章处理逻辑
  • 支持分布式系统中的事件驱动架构
评论加载中...