1

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

  1. 自包含,即包含处理它们所需的所有数据。在此之后,我将传递消息中的所有约束列表。
  2. 可版本化。NServiceBus 通过使用不传递类型信息的 XML 序列化程序来做到这一点(参见Udi 的这个线程答案)。就我而言,这意味着我无法在接收端了解约束的细节。

使用 可以“解决”序列化问题BinarySerializer,但这似乎不是推荐的做法,因为它会破坏版本控制。另一种方法是发送一些标识符,以便可以从某个数据存储中检索约束,但这会消除“自包含”。

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

4

1 回答 1

0

还可以选择通过 DI 将这些对象注入到您的 saga 中。

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

Configure.Instance.Configurer.ConfigureProperty<yourSaga>(s => s.SomeProperty = value);
于 2013-05-07T13:04:28.487 回答