跳转到内容

XiHan.Framework.Messaging

消息处理:消息代理抽象(发布/消费/路由)

  • NuGetXiHan.Framework.Messaging
  • 模块类XiHanMessagingModule
  • 所在层:基础设施层

这是什么

这个包是一层很薄的消息发送抽象。它定义"一条消息(信封)→ 路由到某个通道 → 交给对应发送器投递"的统一模型与接口,本身只负责路由,不含任何具体通道实现(邮件、短信等)。真正的发送器由业务层或专用包(如 Bot 系列)提供并注册进来;本包内置的只有一个"未配置兜底发送器"。

何时使用

  • 你要一套统一的消息模型(信封、接收人、发送结果),把不同通道的差异藏在同一个接口后
  • 你要按 Channel 把消息路由到不同的发送器(email / sms / site 等),而调用方无需感知具体实现
  • 你在实现自定义消息通道,需要一个标准的 IMessageSender 契约去接入路由

安装

bash
dotnet add package XiHan.Framework.Messaging

启用

csharp
[DependsOn(typeof(XiHanMessagingModule))]
public class MyModule : XiHanModule { }

模块在 ConfigureServices 里调用 AddXiHanMessaging(),注册消息调度器 DefaultMessageDispatcher 与未配置兜底发送器 NotConfiguredMessageSender

核心能力

  • 消息信封模型 MessageEnvelope:承载 MessageIdChannelSubjectContent、模板编码/参数、接收人集合、计划/过期时间、关联追踪 Id 等
  • 消息调度器 IMessageDispatcherDispatchAsync(envelope) 把消息分发到匹配通道,返回每个接收人的发送结果集合
  • 消息发送器契约 IMessageSenderCanHandle(channel) 声明支持的通道 + SendAsync(envelope, recipient) 投递单条消息
  • 路由约定:调度器按 Channel 选择能处理的发送器;未匹配到时走兜底发送器
  • 可配置行为 XiHanMessagingOptionsContinueOnError(单接收人失败是否继续)、ThrowWhenNoSender(无发送器时是否抛异常)

主要类型

类型说明
IMessageDispatcher消息调度器:分发消息到通道并汇总结果
IMessageSender消息发送器契约:声明支持的通道并投递消息
MessageEnvelope消息信封(消息主体与元数据)
MessageRecipient接收人模型
MessageSendResult单次发送结果
XiHanMessagingOptions消息模块行为配置
DefaultMessageDispatcher默认调度器实现
NotConfiguredMessageSender未配置通道时的兜底发送器

说明

本包只提供路由骨架:具体发送器(邮件、短信等)以及"后台异步发送(发件箱)"等能力由业务层或上层包实现并注册为 IMessageSender。要发某个通道的消息,先提供并注册对应发送器,再通过 IMessageDispatcher.DispatchAsync 分发即可。

依赖模块

相关模块

Released under The MIT License.