asp.net-core-2.1 - 每个用户在后台运行任务
问题描述
我正在创建一个主页,我可以在其中组织所有书签、做笔记、日历、将东西添加到愿望清单等。我想要的一件事是将我的电子邮件帐户与之同步,我看到我可以为此使用mailkit。我计划让应用程序每五分钟获取一次电子邮件,以了解有多少未读电子邮件。但我面临一些问题:
通过本指南,我看到我可以运行计划任务,因此我可以像使用 cron 作业一样使用它,但问题是该任务对所有用户都是通用的,我不能只为连接的用户获取电子邮件。
我认为的一个解决方案是让 jQuery 通过 ajax 向 api 发出请求,并使用计时器每五分钟运行一次,但是如果我在两个选项卡中打开网络,我正在为每个选项卡发出请求,使服务器过载。
我能做什么或最好的方法是什么?
解决方案
您的 IHostedService 应该是通用的,即您不会有一个每个用户,只有一个能够处理多个用户。要开始监视特定用户,您只需以某种方式“订阅”他们。这可以像添加一些东西到你的后台服务将检查的数据库一样简单,或者你可以使用消息队列之类的东西。在任何一种情况下,您的后台服务都会检查此存储以查看它需要为哪些用户获取信息,然后一个一个地处理它们。
推荐阅读
- javascript - 尽管 Sonarqube 中显示了覆盖率百分比,但未显示测试用例的总数
- reactjs - 使用 mui TextField 输入更新 api 中的数据时出现问题
- python - Python如何在groupby之后进行条件选择
- python - Python subprocess.CalledProcessError:命令'['where','cl']'返回非零退出状态。在pytorch上开发cuda扩展时
- low-level - 我可以在 NVMe 存储设备上执行计算吗?
- mysql - 从 Postman 向 Node.js (express)、MySQL 发出 POST 请求时无法获得响应
- azure - 是否有类似的命令,如 gcp 的“Invoke-AzVMRunCommand”(来自 azure)?
- android - 生产应用程序会在同名抢先体验应用程序之前显示吗?
- google-api-php-client - 为什么 Google Meet 报告审核日志 API 不同步?
- reactjs - reactjs - 如何在reactJs中折叠菜单子菜单?