我们的插件在"检索"消息上运行缓慢,所以我在代码中放置了一些时间戳来确定瓶颈在哪里。我意识到在术前阶段结束和术后阶段开始之间有 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}";
}
关于如何尽量减少这种延误的任何想法将不胜感激。谢谢
如果您的插件步骤是在异步执行模式下注册的,则此延迟完全取决于等待调用/作业的异步服务负载和管道。您可以将其切换到同步。
如果它在同步模式下注册,但仍然间歇性地延迟,这取决于许多事情,例如哪个实体,查询和复杂逻辑(如果有的话(。