我正在开发一个系统,其中订阅的生命周期由状态机处理,我正在寻找 NServiceBus 作为状态之间转换管理的替代品。
例子
客户有一个有效的互联网订阅,并希望在未来 3 个月内取消它。
当前解决方案
在数据库中创建一个转换,例如
tranistionId: 10000,
subscriptionId: 1337,
transition: "execute-inactivation"
due-date: {current date + 3 months}
该表每 10 秒扫描一次,以查看是否有任何新的/到期的转换。
服务总线
我认为可以通过以下方式复制当前的解决方案:
Schedule.Every(TimeSpan.FromSeconds(5)).Action(() =>
{
Bus.Send<CheckForDueTransitions>();
});
但这不会消除对数据库的喋喋不休的问题。
另一个重要特性是可以中止排队的转换,例如取消取消。
是否有针对我的问题的首选 NServiceBus 解决方案?