[英]Making a Webjob a singleton using multiple deployments using Web Apps in Azure
使用Azure WebApps,我知道我可以通过在WebJob settings.job
文件中添加"is_singleton": true
来使WebJob成为单例,如果我在单个WebApp部署中有3个实例,这将非常有用。
但是 - 如何发布到两个WebApp(用例,两个不同的区域)并使WebJob作为单例运行并且仅在其中一个部署上运行。
期望行为的示例:
悉尼部署
新加坡部署
我知道我可以登录到azure门户并在其中一个部署中禁用Web作业,但是我可以对visual studio中的发布配置文件进行转换或更改以自动实现所需的行为吗?
我目前正在部署Visual Studio 2015。
实际上有一个非常方便的Singleton属性可能在你的用例中很有用, 看看这个 ,摘录如下;
WebJobs SDK通过其SingletonAttribute促进了常见的分布式锁定方案。 您可以简单地将SingletonAttribute应用于作业函数,以确保将序列化该函数的所有调用,即使在扩展的实例中也是如此。
[Singleton]
public static async Task ProcessImage([BlobTrigger("images")] Stream image)
{
// Process the image
}
还有一个示例说明如何将Singleton范围缩小到某个区域:
您可以在Singleton上指定范围表达式/值,这将确保序列化该范围内函数的所有执行。
[Singleton("{Region}")]
public static async Task ProcessWorkItem([QueueTrigger("workitems")] WorkItem workItem)
{
// Process the work item
}
从站点的角度来看,这些是两个完全独立的站点,因此其中的webjobs将彼此独立。 如果你想让它们成为单身,你必须添加一些自定义逻辑。
选项包括:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.