有没有办法绕过并发查询上更新的Dynamics 365 Web API限制

时间:2019-04-24 08:32:34

标签: c# dynamics-crm microsoft-dynamics dynamics-365 dynamics-crm-webapi

当我尝试将多批记录迁移到CRM时,Dynamics 365 Web API引发以下错误:

  

传入请求的合并执行时间超过了限制   在300秒的时间范围内为1,200,000毫秒。减少   并发请求数或减少请求的持续时间,以及   稍后再试。

我正在使用并行for循环,以使用Web API将多批数据迁移到CRM。我需要有很高的吞吐量,因为我需要在有限的时间内迁移数百万条记录。

有没有办法绕过这个问题?限制线程数会导致吞吐量遭受重大打击。 我需要一个解决方案,以便可以同时(同时)迁移数百个批次。

我使用的是Dynamics 365的Web API v9.1。我使用的是并行for循环,并且在每次迭代中,都会拾取一大块数据(假设批大小为500),并且该线程将迁移这500条记录到CRM。我希望将500条记录的多个线程迁移到CRM。

我尝试通过使用多个用户来解决此问题(因为限制仅限于每个用户),但是客户端未接受该解决方案。

另一种解决方案是减少并发线程数。这导致吞吐量降低。

我不想限制线程数。是否有解决此问题的方法?

1 个答案:

答案 0 :(得分:2)

API Limits是已记录的功能。

  

该限制将有助于提供一定程度的保护,免受随机和   请求量意外增加,威胁可用性   和Dynamics 365平台的性能特征。

实际上没有办法将其关闭。您可以尝试向Microsoft索取支持票,以查看他们是否愿意,但似乎它们存在的目的是为所有用户(不仅仅是您的客户)保护该平台,所以请不要屏住呼吸。

文档本身有一个答案,尽管它可能不是您想要的。

  

如果收到这些响应,则您的应用程序应停止发送API   直到请求量低于限制。

您可能需要注意的几件事:

  1. 多个用户;您的客户说不,但您没有说原因。如果您担心许可证费用,可以create multiple non-interactive user accounts
  

由于管理用户无权访问客户数据   以及任何与客户互动的功能,   需要Dynamics 365的客户参与应用程序(在线)许可证   (设置后)。

  1. Use ExecuteMultiple to improve performance for bulk data load
  

您可以使用ExecuteMultipleRequest消息来支持更高版本   Dynamics 365 for Customer中的吞吐量批量消息传递方案   参与度,特别是在Dynamics 365 for Customer的情况下   互动应用程序,Internet延迟可能是最大的限制   因素。

您有一些limitations

  • 不允许递归。
  • 默认最大批次大小为1000。
  • 每个组织最多可以执行2个并发ExecuteMultipleRequest。

除了经验之外,Dynamics数据迁移可能需要很长时间才能完成,而通常最好的解决方案是耐心。