【发布时间】:2013-05-07 11:12:37
【问题描述】:
我有一些消息设计头痛。我想为一个长时间运行的进程启动一个 NServiceBus 传奇。进行初始化所需的部分数据是约束列表,它们是抽象基类的实现。据我了解设计理念,理想情况下,消息应该是
- 自包含,即包含处理它们所需的所有数据。在此之后,我将传递消息中的所有约束列表。
- 版本化。 NServiceBus 通过使用不传递类型信息的 XML 序列化程序来做到这一点(请参阅this thread answer by Udi)。就我而言,这意味着我无法在接收端了解约束的细节。
使用BinarySerializer 可以“解决”序列化问题,但这似乎不是推荐的做法,因为它会破坏版本控制。另一种方法是发送一些标识符,以便可以从某个数据存储中检索约束,但这会消除“自包含”。
这里有第三种方法,还是我只需要选择一些“最不坏”的解决方案?
【问题讨论】:
-
约束列表是如何导出的?大概有一些数据表明需要哪些约束。也许您应该在消息中传递该数据,并在消费者端构建约束列表?
-
@MattDavey:它们不是这样派生的数据,它们是由用户预先配置的。用户可以选择一些符合其业务需求的约束条件(例如“将此流程应用于订单历史 > x $ 的用户”或“将此流程应用于周六 0800 到 1000 之间登录的用户”)。从参数创建列表并不简单(或可能,也许)。
标签: nservicebus messaging