执行管道阶段之间的动态CRM 365插件延迟



我们的插件在"检索"消息上运行缓慢,所以我在代码中放置了一些时间戳来确定瓶颈在哪里。我意识到在术前阶段结束和术后阶段开始之间有 7 秒的延迟,间歇性地发生。

结束前 - 3/22/2018 11:57:55 AM后期开始 - 3/22/2018 11:58:02 AM

protected virtual void RetrievePreOperation()
{
    var message = $"END PRE - {DateTime.Now}";
    PluginExecutionContext.SharedVariables.Add("message", message);
}
protected virtual void RetrievePostOperation()
{
     // Stop recursive calls
     if (PluginExecutionContext.Depth > 1) return;
     if (PluginExecutionContext.MessageName.ToLower() != Retrieve ||
         !PluginExecutionContext.InputParameters.Contains("Target") ||
         PluginExecutionContext.Stage != (int)PipelineStages.PostOperation)
         return;

    var entity = (Entity)PluginExecutionContext.OutputParameters["BusinessEntity"];
    string message = PluginExecutionContext.SharedVariables["message"].ToString();
    message += $"POST STAGE START - {DateTime.Now}";             
}

关于如何尽量减少这种延误的任何想法将不胜感激。谢谢

如果您的插件步骤是在异步执行模式下注册的,则此延迟完全取决于等待调用/作业的异步服务负载和管道。您可以将其切换到同步。

如果它在同步模式下注册,但仍然间歇性地延迟,这取决于许多事情,例如哪个实体,查询和复杂逻辑(如果有的话(。

最新更新