使用 .NET Fluent API 缩放 Azure 弹性池



我正在使用Azure Fluent API,Azure Management Libraries for .NET来缩放Azure 弹性池中的DTU,并想知道是否可以触发更新而无需等待处理完成。

目前,以下代码块将等到弹性池完成缩放后再继续执行。对于大型高级弹性池,这可能意味着此行最多需要 90 分钟才能完成。

ElasticPool .Update() .WithDtu(1000) .Apply();

还有一个ApplyAsync()方法,我故意不能await允许程序继续执行,如果我采用这种方法,程序将在调用此行后不久结束执行,我不确定这个库是否设计为以这种方式工作。

有谁知道更好的解决方案来触发更新而无需等待响应?或者,在不等待响应的情况下触发异步方法是否安全?

目前无法在 Fluent SDK 中为更新方案触发并忘记调用,但我们正在寻找将来启用手动状态轮询的方法。一种选择是创建一个等待完成的线程。另一种是使用 Inner getter 并进行低级别的 BeginCreateOrUpdateAsync/BeginUpdateAsync 方法调用,然后进行手动轮询。

附带说明一下,如果您需要进行多个调用,然后等待所有调用完成,您可以使用 Task.WaitAll(...) 并提供 ApplyAsync 任务的列表。

如果您遇到任何错误,请在存储库中记录问题,因为这样您就可以跟踪修复进度。

编辑:仅供参考,调用被阻止不是因为 SDK 正在等待来自 Azure 的响应,而是 SDK 等到调用完成、更新操作完成并且资源已准备好用于进一步操作。如果在这种情况下,弹性池仍处于更新过程中,则仅触发更新,然后尝试使用资源就会导致错误响应。

相关内容

  • 没有找到相关文章

最新更新