0

我们正在将遗留系统迁移到 nservicebus 5.0。将我们的业务数据迁移到 saga 数据的最佳方式通常是什么?例如,如果我们有一个 OrderCancellationPolicy saga,它只允许在 2 天内取消,那么来自遗留系统的过去订单如何以正确的状态创建这些新的 saga?

我看到两个选项。首先是编写一些 sql 脚本来预填充 saga 持久性表(我们使用的是 nhibernate 持久性)。另一种是创建某种特殊的导入消息,例如 MigrateOrderDataCmd,其中包含来自旧订单的数据。导入脚本可以发送 saga 可以处理的这些消息,并以这种方式设置 saga 数据。

对此领域的任何指导表示赞赏。

4

1 回答 1

1

从理论上讲,我会选择选项二,或者它的一个版本。想象一下,您的 saga 被搁置了一天,消息在队列中堆积如山。收到某天的消息后,您需要验证消息的发送时间,或者自己为消息添加自定义日期时间。

当 saga 最终接收到消息时,它知道它不应该设置两天后的超时时间,而是设置消息传递到 saga 所花费的时间。这样,当您迁移当前状态时,所有消息都会获得适当的超时设置。

另一方面,如果您有大量正在运行的进程,您可能想研究如何传播这些表。我没有亲自向这些表添加记录的经验,只是更改它们。:)

于 2015-08-17T23:20:24.760 回答