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

the*_*der 3 c# microsoft-dynamics dynamics-crm dynamics-crm-webapi dynamics-365

当我尝试将多批记录迁移到 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。

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

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

我不想限制线程数。这个问题有解决方法吗?

Jam*_*ood 5

API的限制都记录功能。

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

真的没有办法关闭它们。您可以尝试向 Microsoft 提出支持票,看看他们是否愿意,但它们的存在似乎是为了保护所有用户(不仅仅是您的客户)的平台,所以不要屏住呼吸。

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

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

您可以查看以下几点:

  1. 多个用户;你的客户说不,但你没有说为什么。如果担心许可证成本,您可以创建多个非交互式用户帐户

由于管理用户无权访问客户数据和任何客户参与功能,因此不需要 Dynamics 365 for Customer Engagement 应用程序(在线)许可证(设置后)。

  1. 使用 ExecuteMultiple 提高批量数据加载的性能

您可以使用 ExecuteMultipleRequest 消息来支持 Dynamics 365 for Customer Engagement 中更高吞吐量的批量消息传递方案,尤其是在 Internet 延迟可能是最大限制因素的 Dynamics 365 for Customer Engagement 应用程序的情况下。

这种方法有一些限制

  • 不允许递归。
  • 默认情况下,最大批量大小为 1000。
  • 每个组织有 2 个并发 ExecuteMultipleRequest 执行的限制。

另外,从经验来看,Dynamics 数据迁移可能需要很长时间才能完成,通常解决此问题的最佳方法是耐心。


编辑:自从我在……四月(!)

如果您在 Power Platform(例如 CRM/CE/Dynamics Online)上使用 Common Data Service;前往Common Data Service API 限制概述以了解新限制的工作原理。此外, ExecuteMultiple 的并发限制已被删除(并替换为上面的 API 限制)。