Nservicebus 自包含或可版本的消息?

Nservicebus 自包含或可版本的消息?,nservicebus,messaging,Nservicebus,Messaging,我有点头疼。我想开始一个长期运行过程的NServiceBus传奇。初始化所需的部分数据是约束列表,这些约束是抽象基类的实现。正如我所理解的设计理念,信息应该是理想的 自包含,即包含处理它们所需的所有数据。接下来,我将传递消息中的所有约束列表 可版本的。NServiceBus通过使用不传递类型信息的XML序列化程序来实现这一点(请参阅)。在我的例子中,这意味着我无法在接收端了解约束的细节 序列化问题可以通过使用BinarySerializer来“解决”,但这似乎不是推荐的做法,因为它破坏了版本控制

我有点头疼。我想开始一个长期运行过程的NServiceBus传奇。初始化所需的部分数据是约束列表,这些约束是抽象基类的实现。正如我所理解的设计理念,信息应该是理想的

  • 自包含,即包含处理它们所需的所有数据。接下来,我将传递消息中的所有约束列表
  • 可版本的。NServiceBus通过使用不传递类型信息的XML序列化程序来实现这一点(请参阅)。在我的例子中,这意味着我无法在接收端了解约束的细节 序列化问题可以通过使用
    BinarySerializer
    来“解决”,但这似乎不是推荐的做法,因为它破坏了版本控制。另一种方法是发送一些标识符,以便可以从一些数据存储中检索约束,但这将消除“自包含性”


    这里有第三种方法吗,或者我只需要选择一些“最不坏”的解决方案吗?

    也可以选择通过DI将这些对象注入到您的传奇中

    只需创建一个boostapping类,该类在启动时将调用:

    Configure.Instance.Configurer.ConfigureProperty<yourSaga>(s => s.SomeProperty = value);
    
    Configure.Instance.Configurer.ConfigureProperty(s=>s.SomeProperty=value);
    
    约束列表是如何导出的?大概有一些数据说明需要哪些约束。也许您应该在消息中传递该数据,并在消费者端构建约束列表?@MattDavey:它们不是这样派生的数据,而是由用户事先配置的。用户可以选择一些与其业务需求相匹配的约束集(例如“将此流程应用于订单历史记录>x$的用户”或“将此流程应用于周六在0800和1000之间登录的用户”)。从参数创建列表并不简单(或者可能),即使需要数据库调用来填充属性,是否也建议使用该方法?