我正在使用Azure Cloud Service和web api开发应用程序。我想允许创建咨询会话的用户能够更改该会话的价格,但是我想允许所有用户在新价格影响当前注册的所有成员的价格之前30天离开会话。会话。我的第一个想法是使用队列存储并设置30天时间限制的可见性超时,但这似乎可以随着时间的推移真正快速增长队列,特别是如果消息不应该运行30天;更不用说订购问题了。我也在关注任务调度程序,但会话定价变化不是一个反复出现的概念,而是更随机的。队列概念是一种好的方法还是有更好更有效的方法来实现这一目标?
答案 0 :(得分:4)
您尝试做的事情应该使用关系数据库。您可以使用时间戳来记录会话价格何时发生变化。我根本不会使用队列。队列更多用于在分布式系统中传递消息。您的问题只是跟踪哪些会话和时间的价格变化。该数据应在数据库中建模。
答案 1 :(得分:3)
我认为这种情况更适合使用Azure Scheduler。以编程方式创建一次重复作业,设置日期为30天后运行一次。一旦调度程序自动触发此作业,请指定一个操作以回调您的某个API /服务以执行价格和工作。其他必需的更新,并且还要从调度程序中删除此作业,作为此操作的一部分,以获得干净的作业列表。无论如何,Azure Scheduler作业集合的高级计划将为您提供无限数量的作业。
希望这正是您所寻找的......
答案 2 :(得分:3)
我会考虑使用Azure WebJobs。 WebJob基本上使您能够在Azure Web App的上下文中运行.NET控制台应用程序。它可以按需运行,持续运行,也可以响应重复发生的时间表。如果您的处理要求很低并且允许它,它们也可以在运行Web App的同一过程中运行,以便为您节省$$$,因为它们是免费的。
您可以安排WebJob每天运行一次或两次并检查情况并根据需要做出反应。由于它实际上只是一个.NET工作者角色,因此您具有最大的灵活性。