C# Academy · 课时

消息传递概念

了解命令、事件和队列。

第 1 / 4 课13 个步骤

消息传递概念 是 CoddyKit 上的免费 C# Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 4 节课。

为什么使用消息传递

异步消息传递让服务无需直接调用彼此即可通信。生产者发送一条消息,消费者稍后再接收。这种方式可以解耦服务、平滑负载峰值,并在消费者暂时不可用时保持系统的弹性。

什么是 MassTransit

MassTransit是一个 .NET 框架,构建于 RabbitMQ 或 Azure 服务总线等消息代理之上。它会处理序列化、路由、重试等工作,让您专注于消息和处理器,而不必处理消息代理的底层连接细节。

dotnet add package MassTransit

命令与事件

有两种重要的消息意图。一条命令会告诉特定服务执行某项操作(“ChargePayment”)。一个事件会向所有关注者宣布某件事情已经发生(“OrderPlaced”)。命令只有一个处理器,而事件可以有多个处理器。

设计命令

命令是一种普通的消息类型,采用命令式方式命名。请将它发送给一个消费者。

public record ChargePayment(
    Guid OrderId,
    decimal Amount);

设计事件

事件使用过去时命名,并发布给所有感兴趣的订阅者。

public record OrderPlaced(
    Guid OrderId,
    string CustomerEmail);

队列

队列会暂存消息,直到消费者处理它们。它采用点对点模式:每条消息只会发送给一个消费者,从而可以在多个消费者实例之间实现负载均衡(竞争消费者)。

交换机与主题

RabbitMQ 等消息代理会通过交换机进行路由。生产者向交换机发布消息,交换机会将消息分发到所有绑定的队列。这就是一条事件如何到达多个订阅者的方式。

MassTransit 如何使用它们

MassTransit 会自动将您的消息类型映射到交换机和队列。发送操作面向队列(命令);发布操作面向交换机,因此每个已订阅消费者的队列都会收到一份副本(事件)。

实际解耦

订单服务发布 OrderPlaced 后即可继续执行。与此同时,电子邮件服务和分析服务可以分别消费它。添加新的订阅者无需修改生产者。

投递保证

消息代理通常提供至少一次投递:失败后消息可能会再次投递。因此,消费者应当是幂等的,以确保同一条消息被处理两次也是安全的。

何时使用消息传递

当工作可以异步执行、需要解耦服务或需要吸收突发流量时,请考虑使用消息传递。对于需要立即获得响应的请求-响应场景,直接调用 API 可能仍然更简单。

快速检查

测试消息传递概念。

回顾

异步消息传递通过消息代理解耦服务。MassTransit抽象了 RabbitMQ 等消息代理。命令(命令式命名、一个处理器)会被发送到队列;事件(过去时命名、多个处理器)会被发布到交换机,再由交换机将消息分发给订阅者。请预期至少一次投递,因此要让消费者具备幂等性。

免费开始

用 AI 导师学习 C# — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
93
课程
346

常见问题解答

「消息传递概念」课时是免费的吗?

是的 — 「消息传递概念」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 4 节课。

「消息传递概念」这节课中我会学到什么?

了解命令、事件和队列。 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「消息传递概念」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 消息传递概念
  2. 生成和使用消息
  3. Saga 与工作流
  4. 错误处理与重试
← 返回 C# Academy