Olá pessoal,
Eu já havia escrito anteriormente sobre o limite de chamadas através das API (Common Data Service API request calls) neste post. Porém, o cenário era de “nenhum limite” para 60 mil chamadas por usuário em uma intervalo de 5 minutos. Apesar de já ter adicionado um menção de que o limite mudou novamente no meu primeiro post. Vou utilizar deste post para informá-lo do novo limite.
Observações antes de nos aprofundarmos…
O limite vale apenas para as versões online do Dynamics 365 CE, se você tem a on-premises, este post não é para você! rs
Plugins e custom workflows são executados dentro do servidor independentemente de algum usuário loagado, desta forma não nenhuma chamada feita por eles irá contar contra o limite.
A mudança
Pois bem, em março deste ano (2019), a Microsoft decidiu diminuir um pouco mais o limite de chamadas de um mesmo usuário em um intervalo de 5 minutos de 60 mil para 4 mil!
Aparentemente a redução mostra-se como algo ruim e que irá impactar muita gente, mas fazendo algumas contas, digamos que estamos fazendo requests (CRUD e outras funções) em batches (blocos) de 100, assim teremos 400.000 registros a cada 5 minutos. Em 1 hora, 4.800.000, algo muito, mas bom! (porém, eu não acredito que o próprio servidor irá dar conta de orquestrar toda essa quantidade de registros, mas ai é outra história…).
Apenas para lembrar que chamadas em batch (ExecuteMultipleRequest) contam como apenas uma chamada, independente de quantos registros fazem parte do batch.
O mesmo se aplica para o RetrieveMultiple, pouco importa se retornou 1 ou 1000 registros, será considerado apenas uma chamada. Porém, caso exista paginação, ou seja, mais de 5.000 registros, será contabilizado uma chamada para cada página.
Mitos desmitificados, vamos aos detalhes…
Com o novo limite em ação, ganhamos bons controles em cada de excedermos os limites de chamadas, exceções serão lançadas e podemos tratá-las de forma que nossas chamadas não se percam no limbo e sejam cuidadas ou re-chamadas posteriormente.
Temos três tipos de messagens de erro:
Código do erro | Menssagem |
---|---|
-2147015902 | Número de chamadas excedeu o limite de 4000 em menos de 300 segundos. |
-2147015903 | O tempo de execução combinado das solicitações recebidas excedeu o limite de 1.200.000 milissegundos ao longo do intervalo de 300 segundos. Diminua o número de solicitações simultâneas ou reduza a duração das solicitações e tente novamente mais tarde. |
-2147015898 | Número de chamadas simultâneas excedeu o limite de X |
Como eu disse anteriormente, podemos tratá-los através de FaultException<OrganizationServiceFault>. Existe um exemplo prático no post oficial, para ajudar a aplicá-lo na prática!
Bom, post curto, mas acredito que cumpra seu papel de avisar sobre mudança. Já estou escrevendo outro sobre o que muda com as novas lincenças do Release de Outubro (2019) em relação ao limite de chamadas! Sim, além do “limite técnico”, teremos um limite de acordo com a licença do usuário… MAS ISSO É ASSUNTO PARA DEPOIS…
[]’s,
Tiago