Azure Web角色和实例

时间:2016-06-01 07:49:14

标签: azure azure-web-roles

我有多个实例的网络角色。我想每天早上7点向我的客户发送一封电子邮件,其中包含他们的统计信息。 我的问题如下:如果我使用 Cron作业来处理工作邮件将多次发送

如何配置我的实例才能向每位客户发送一封电子邮件?

2 个答案:

答案 0 :(得分:1)

根据我的经验,我认为您可以尝试使用唯一的实例ID来确保有一个实例可用于通过电子邮件发送作为cron作业。

这是一个简单的代码。

import com.microsoft.windowsazure.serviceruntime.RoleEnvironment;

String instanceId = RoleEnvironment.getCurrentRoleInstance().getId();
if("<instace-id-for-running-cronjob>".equals(instanceId)) {
    // Coding for cron job
    .....
}

作为参考,请参阅下面的函数RoleInstance.getId的说明。

  

返回此实例的ID。
  返回的ID对于角色实例的应用程序域是唯一的。如果实例已终止且已配置为自动重新启动,则重新启动的实例将 与已终止的实例具有相同的ID

有关在Azure SDK for Java中使用上述类的更多详细信息,请参阅下面的类列表。

希望它有所帮助。

答案 1 :(得分:0)

通常,Multi-instance Cloud Services解决此问题的方法是使用Master Election模式。你要做的是在早上7点(或者当你的CRON工作开始时),你的所有实例都会尝试获得blob上的租约。但是,只有一个实例将成功获取租约,而其他实例将失败且出现PreConditionFailed (419)错误(请确保捕获此异常!)。获取租约的实例基本上是Master,该实例将发送电子邮件。

显然,这种方法的问题在于,如果此Master实例无法传递消息,该怎么办?但我想这是另一个问题:)。