我们有一个启用了自动缩放的Azure云服务。我们认为我们的某些消息偶尔会被一台机器处理,该机器随后会被自动缩小过程关闭。这意味着消息的出队计数会增加,如果这种情况发生了几次,我们会在消息再次出列时将消息标记为失败(我们让消息尝试处理两次)
自动扩展选择纯粹基于辅助角色主机进程的CPU使用率来关闭哪台机器?
是否有办法向Azure基础架构发出不应关闭某台计算机的信号?
答案 0 :(得分:3)
您在设计应用时考虑了错误的期望。任何时刻任何一个实例都无处可见,这是完全可以的。也许它会被关闭,也许只是崩溃。您的应用程序应该能够处理这个问题。你需要逻辑“放弃”#34;消息和"放弃"不应该被视为通常的失败。也许你想要计算它,但至少应该是一个单独的计数器。
答案 1 :(得分:2)
您无法在角色实例中拒绝关机,但可以延迟,OnStop()
(我相信您可以延迟最多5分钟)。
你可能想要阻止角色实例摄取更多队列消息,同时它正在完成当前项目,这应该非常简单(例如,在OnStop()
中设置一个布尔值队列读取代码在获取另一个队列消息之前检查。)