asp.net-core - 仅在一个横向扩展的 Azure 应用服务实例上运行 IHostedService
问题描述
是否可以IHostedService
在 ASP.NET Core 中仅在一个横向扩展的 Azure 应用服务实例上运行?或者解决方案是IHostedService
在一个实例的自己的应用程序服务中运行它?
我有BackgroundService
一个每天运行一次并通过电子邮件发送报告。当我的应用服务扩展到 2 个实例时,此服务将每天同时运行两次,从而导致发送两封相同的电子邮件。
我怎么解决这个问题?
解决方案
最好将事物分解为单独的应用程序,这里也是如此。如果您只需要托管服务的一个实例,则应将其拆分为一个单独的项目并部署一个实例。如果你将它部署在你的应用程序中,你的应用程序的每个实例都会有一个实例;没有办法,参考这个帖子。
使用托管服务,您的网站的每个部署都有一个运行该托管服务的实例,如果您只想随时运行该“进程”的一个实例,这可能会成为一个问题。您可以通过创建自己的锁定机制来解决这个问题,但显然 webjobs 开箱即用。因此,您可以使用作为单例运行的 webjob来实现您想要的。请参阅有关ASP.NET Core 中的托管服务的文章。
推荐阅读
- git - git log --cherry-pick A..B - 我做错了什么?
- xml - xQuery 使用命名空间的数据?
- javascript - 如何在不同的页面中获取 cookie?
- java - 如何迭代两个相同大小的列表并通过迭代两个列表来在另一个列表中设置其他列表值?
- virtual-machine - Azure 上适用于 Linux 的 VM。开启APS拉取用户数据
- angular - ngx-bootstrap 日期选择器不可编辑 | 角 8
- python - 如何在从基类生成的类上创建@property?
- laravel - Laravel 将单个表单值存储在 2 个不同的表中
- git - 处理 git log 的输出 - 提交消息前的空格
- javascript - 功能在 Chrome 中运行良好,但在 Firefox 中不起作用