【问题标题】:Run scheduler on Azure based on user specific scheduled time根据用户特定的计划时间在 Azure 上运行计划程序
【发布时间】:2017-06-21 15:24:44
【问题描述】:

我们有一个 API 可以根据预定的 Next_Refresh_Time 获取用户的最新交易数据。每个用户都有不同的计划刷新时间。由于我们有成千上万的用户,我们必须运行调度程序来获取数据。请建议我最好的方法。

【问题讨论】:

    标签: azure azure-webjobs azure-scheduler


    【解决方案1】:

    每个用户都有不同的计划刷新时间。由于我们有成千上万的用户,我们必须运行调度程序来获取数据。

    您可以添加一个队列消息并在用户登录时指定initialVisibilityDelayNext_Refresh_Time 值,然后您可以创建并运行Queue-trigger WebJob 来处理队列消息并获取最新数据(如果当前用户是仍然在线,将消息(指定与原始消息相同的内容和 initialVisibilityDelay)添加到队列中)。

    此外,如果您想将最新数据实时推送给特定的连接用户,SignalR 将帮助您实现实时功能,并且 SignalR 可用于各种client platforms。您可以将登录用户的连接ID保存在队列消息中,然后您可以调用WebJob函数中的hub方法根据连接ID将数据推送给连接的用户。

    以下线程和文章将有助于了解如何建立连接和调用集线器方法。

    【讨论】:

    • 感谢您的建议。事务 API 应该从后台进程触发。用户是否在线并不重要,也不是实时推送给连接的用户。数据将从 API 中获取并存储在数据库中。
    • The transaction API should be triggered from the background process. 正如我在回复的第一部分中提到的,您可以在用户登录或添加/创建用户时为每个用户添加队列消息,然后运行 ​​Queue-trigger WebJob 来处理队列消息并调用 API 获取最新数据并将其存储在数据库中。
    • 我正在按照您的建议完成任务。队列消息不允许我设置 NextVisibleTime,因为它是只读属性。
    • 嗨@Sarva,抱歉指向错误的属性。我编辑了回复,添加消息时请尝试指定initialVisibilityDelay。
    • 嗨@Fred,如果 Next_Refresh_Time 超过一周或一个月,我该怎么办。由于存储队列仅将消息保留 7 天,因此替代解决方案是什么。请帮忙。
    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多