代码之家  ›  专栏  ›  技术社区  ›  noobie

dynamics crm 365插件执行管道阶段之间的延迟

  •  0
  • noobie  · 技术社区  · 7 年前

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

    2018年3月22日上午11:57:55前结束 赛后开始-2018年3月22日上午11:58:02

    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}";             
    }
    

    如果您有任何关于如何尽量减少延误的想法,我们将不胜感激。谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Arun Vinoth PrecogTechnologies    7 年前

    如果插件步骤是在异步执行模式下注册的,那么该延迟完全取决于异步服务加载;等待呼叫/作业的管道。您可以将其切换到同步。

    如果它在同步模式下注册,但仍存在间歇性延迟,则它取决于许多事情,如哪个实体、查询和;复杂逻辑(如有)。