gpt4 book ai didi

c# - 为什么 MassTransit 消息传递中不允许使用结构?

转载 作者:行者123 更新时间:2023-11-30 17:50:28 24 4
gpt4 key购买 nike

MassTransit 中的消费者接口(interface)都希望消息模型是类而不是结构。由于它们都是内部接口(interface)(我必须说那里的设计非常好),这是显示约束的通用容器类,直接采取 from the source code :

/// <summary>
/// Declares a Consume method for the message type TMessage which is called
/// whenever a a message is received of the specified type.
/// </summary>
public static class Consumes<TMessage> where TMessage : class

这对于开始使用该技术的人来说不是问题,但对我们来说却是个麻烦,因为在我们考虑使用服务总线框架之前,我们的代码库中就已经有了与命令模式相关的对象,所以我们必须更改大量接口(interface)和通用类以添加该约束,以便它们与 MT 一起工作。

虽然我们很幸运没有显式地拥有任何 struct 类型,因为这可能会导致更多(也许是不需要的)更改。

为什么要求消息类是?是否有可能改变它,使库与现有代码更无缝地连接?我认为约束并不是白加的,所以可能存在一些并发症。

最佳答案

实际上,您所有的消息契约都应该是接口(interface)。抽象应该从任何逻辑中移除,接口(interface)将强制执行这一点。您还可以以有趣的方式组合交付,因为 MT 将交付给继承/实现层次结构中的所有匹配路由。

但是不管我们建议对消息做什么,事实证明值类型不会像我们使用它们的方式那样工作。我们严重依赖类型信息,我们可以为交付给您的消费者的类型创建代理。

关于c# - 为什么 MassTransit 消息传递中不允许使用结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20744250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com