2

我正在研究一个用户故事,其中创建了一个任务(一个实体),供用户在日期过期且满足其他条件时处理(在一个单独的实体上 - 比如说一个产品)。

理想情况下,我希望在此“日期”过期时实时创建域事件 - 但是我无法在代码中使用任何触发器来执行此操作。我目前只能真正看到一种要使用的模式 - 即拥有一个每小时轮询一次的 Windows 服务(例如使用 Topshelf / Quartz),使用产品存储库拉回所有记录,然后编写代码以检查是否日期是否过期且是否符合标准。如果成功,将触发领域事件并创建任务。

你可以想象,我不是特别喜欢这个。它不是实时的,我正在拉回大量数据以实现相对简单的事情。我在这里错过了一个技巧吗?某种状态机/工作流程?在这种情况下,我可以使用哪些架构模式/好的设计?

如果问题有点含糊,我深表歉意,如果需要,我会尝试澄清。

4

1 回答 1

1

如果你仍然使用像 Quartz 这样复杂的调度器,为什么不直接在任务过期的时候用它来回调你的应用程序呢?我从来没有以这种方式使用过 Quartz,但我认为这应该是可能的。

为了获得一个强大的解决方案,除了准时回调之外,您可能还需要考虑定期检查,但我希望这些定期检查可以在低频率的基础上运行。

无论如何,当您收到回调时,您需要检查哪些任务确实过期。如果轮询数据库以进行此检查是一个性能问题(在大多数情况下我不希望它是),您始终可以缓存即将到来的截止日期。确保您适当地刷新缓存,例如通过侦听“任务发布”域事件。

于 2016-02-09T17:33:57.410 回答