首页 > 解决方案 > 每个用户在后台运行任务

问题描述

我正在创建一个主页,我可以在其中组织所有书签、做笔记、日历、将东西添加到愿望清单等。我想要的一件事是将我的电子邮件帐户与之同步,我看到我可以为此使用mailkit。我计划让应用程序每五分钟获取一次电子邮件,以了解有多少未读电子邮件。但我面临一些问题:

通过本指南,我看到我可以运行计划任务,因此我可以像使用 cron 作业一样使用它,但问题是该任务对所有用户都是通用的,我不能只为连接的用户获取电子邮件。

我认为的一个解决方案是让 jQuery 通过 ajax 向 api 发出请求,并使用计时器每五分钟运行一次,但是如果我在两个选项卡中打开网络,我正在为每个选项卡发出请求,使服务器过载。

我能做什么或最好的方法是什么?

标签: asp.net-core-2.1

解决方案


您的 IHostedService 应该是通用的,即您不会有一个每个用户,只有一个能够处理多个用户。要开始监视特定用户,您只需以某种方式“订阅”他们。这可以像添加一些东西到你的后台服务将检查的数据库一样简单,或者你可以使用消息队列之类的东西。在任何一种情况下,您的后台服务都会检查此存储以查看它需要为哪些用户获取信息,然后一个一个地处理它们。


推荐阅读