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

时间:2013-05-07 11:12:37

标签: nservicebus messaging

我有一些消息设计头疼。我想为一个长期运行的过程启动一个NServiceBus传奇。进行初始化所需的部分数据是约束列表,它是抽象基类的实现。正如我对设计理念的理解,理想情况下应该是

  1. 自包含,包含处理它们所需的所有数据。在此之后,我将传递消息中的所有约束列表。
  2. 版本可控。 NServiceBus通过使用不传递类型信息的XML序列化程序来实现这一点(参见this thread answer by Udi)。在我的情况下,这意味着我不能在接收端拿起约束的具体细节。
  3. 使用BinarySerializer可以“解决”序列化问题,但这似乎不是推荐的做法,因为它打破了版本控制。另一种方法是发送一些标识符,以便可以从某个数据存储区中检索约束,但这将消除“自包含”。

    这里有第三种方式,还是只需选择一些“最不好”的解决方案?

1 个答案:

答案 0 :(得分:0)

还可以选择通过DI将这些物体注入你的传奇。

只需创建一个在启动时调用的boostrapping类:

Configure.Instance.Configurer.ConfigureProperty<yourSaga>(s => s.SomeProperty = value);