DDD 中基于时间/日期的域事件的模式

本文关键字:日期 模式 事件 时间 于时间 DDD | 更新日期: 2023-09-27 18:33:57

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

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

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

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

DDD 中基于时间/日期的域事件的模式

如果您仍然使用像 Quartz 这样的复杂调度程序,为什么不使用它在任务过期的确切时间回调您的应用程序呢?我从未以这种方式使用过石英,但我认为这应该是可能的。

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

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