我想检测到我的Azure角色的实例崩溃的事实。在我的情况下检测意味着我的角色的另一个实例被通知有关崩溃。请查看下面解释的我的想法或提出其他解决方案。检测Azure实例的崩溃
我想到的想法利用了Azure队列中的项目处理时间有限的事实。
- 配置一个天青队列。角色的所有实例都监听该队列。
- 配置角色实例有内部端点
- 当实例的启动时,它发布消息队列。该消息包含实例A的ID,A的内部端点的IP,该消息应该被转发回A的标记。
- 最有可能的消息在另一个实例B上结束.B将把消息Id和PopReceipt转发给通过内部端点。实例A使用此ctr http://msdn.microsoft.com/en-us/library/dn451949.aspx创建CloudQueueMessage的对象。
- 实例A开始无限更新接收消息的可见性超时。从Azure Queue的角度来看,此消息将会被处理很长时间。在第一次更新A中删除“转发此消息”标记。
- 如果实例A崩溃,停止延长处理时间。该消息很快会自动显示给其他实例。
- 实例C接收消息并了解崩溃的消息A:消息包含实例A的ID并且没有“forward-this-message”标记。
- 如果实例A正常停止,它会将其队列消息标记为已处理。
实例A无法更新步骤#5中的可见性超时会发生什么情况? –
实例A应该开始提前更新可见性超时,以便有可能重试的时间。这将缓解瞬态问题。如果拼命无法更新它可能会自杀 - 请Azure回收该实例。 – SergeyS
您可以公开和私人端点在这些实例上进行外部ping? – Igorek