每个用户在后台运行任务

时间:2018-07-23 11:52:15

标签: asp.net-core-2.1

我正在制作一个主页,可以组织所有书签,做笔记,日历,将商品添加到愿望清单等。我想做的一件事情就是与之同步我的电子邮件帐户我可以使用mailkit。我正在计划,例如,每隔五分钟,该应用会提取一封电子邮件,以了解有多少未读电子邮件。但是我遇到了一些问题:

有了这个guide,我看到我可以运行预定的任务,因此可以像执行cron作业一样使用它,但是问题是该任务对所有用户都是通用的,我不能只获取为连接的用户发送电子邮件。

我认为一种解决方案是让jQuery通过带有计时器的ajax向api发送给api的请求,以每五分钟运行一次,但是如果我在两个标签页中打开了Web,则我正在为每个标签页重载服务器。

我该怎么办或最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

您的IHostedService应该是通用的,即每个用户没有一个,只有一个能够处理多个用户的。要开始监视特定用户,您只需以某种方式“订阅”他们。这就像将某些内容添加到您的后台服务将检查的数据库中一样简单,或者您可以使用诸如消息队列之类的东西。无论哪种情况,您的后台服务都会检查该商店,以查看需要为其获取信息的用户,然后对它们进行逐个处理。