部署的第一个实例是否总是以零结尾?0. like "xxxx_IN_0" 当放大到 X 个实例时,下一个实例是否总是以 1 2 3 4 作为最后一个数字。( 我认同)。当我再次缩小规模时会发生什么?我读到它会随机选取其中一个实例。因此,当缩小到 1 个实例时,我不能假设我知道仍在运行的 ID 是什么?
有谁在放大和缩小时玩过ID并且知道这些事情吗?
我问的原因是我有一些额外的逻辑,我只想在一个实例上运行,而不是更少或更多。如果我可以假设“xxx_IN_0”始终存在,那么我可以通过简单检查最后一个 ID 是否为零来做到这一点。如果不是,我正在考虑检查所有 id,如果当前实例是最低的,那么它将发挥它的魔力。
如果是最后一种情况,在完成放大或缩小时是否有可以监控的事件?
更新
来自答案:
if (RoleEnvironment.IsAvailable)
{
RoleEnvironment.Changed += RoleEnvironment_Changed;
}
void RoleEnvironment_Changed(object sender, RoleEnvironmentChangedEventArgs e)
{
var change = e.Changes.OfType<RoleEnvironmentTopologyChange>().FirstOrDefault();
if (change != null)
{
Trace.TraceInformation("RoleEnvironmentTopologyChange at RoleName '{0}'", change.RoleName);
}
当我扩大和缩小规模时,我的跟踪日志中没有任何信息。
必须设置一个内部端点来触发事件:
<InternalEndpoint name="InternalEndpoint1" protocol="http" />
http://blogs.msdn.com/b/windowsazure/archive/2011/01/04/responding-to-role-topology-changes.aspx