Sitecore事件队列-我可以延迟事件吗?

Sitecore事件队列-我可以延迟事件吗?,sitecore,Sitecore,Sitecore有一个保存到数据库的nice。 你也可以 我现在需要能够在处理之前引发一个有延迟的事件。这可能吗 我可以使用其他一些排队系统(?),但如果可能的话,最好使用内置的Sitecore系统。为了澄清一点,尽管Sitecore有各种与内容编辑和发布相关的事件模型,以及页面生命周期内的管道事件,但这样说是错误的“Sitecore有一个事件队列系统,它被持久化到数据库” 内容编辑器事件背后的想法是它们以特定的顺序和顺序发生,因此不可能“延迟”事件。您可以在sitecore中定义计划任务(请参

Sitecore有一个保存到数据库的nice。 你也可以

我现在需要能够在处理之前引发一个有延迟的事件。这可能吗


我可以使用其他一些排队系统(?),但如果可能的话,最好使用内置的Sitecore系统。

为了澄清一点,尽管Sitecore有各种与内容编辑和发布相关的事件模型,以及页面生命周期内的管道事件,但这样说是错误的“Sitecore有一个事件队列系统,它被持久化到数据库”


内容编辑器事件背后的想法是它们以特定的顺序和顺序发生,因此不可能“延迟”事件。您可以在sitecore中定义计划任务(请参见
/sitecore/system/tasks
)。也许您可以创建一个自定义事件,该事件可以创建或修改sitecore项目以保存某些任务信息(如果愿意,可以将其称为“队列”),然后创建一个自定义任务(计划以预定义的间隔运行)它将从此队列中获取项目并对其进行处理。

为了澄清一点,尽管Sitecore具有与内容编辑和发布相关的各种事件模型,以及页面生命周期内的管道事件,但说“Sitecore具有持久化到数据库的事件队列系统”是错误的


内容编辑器事件背后的想法是它们以特定的顺序和顺序发生,因此不可能“延迟”事件。您可以在sitecore中定义计划任务(请参见
/sitecore/system/tasks
)。也许您可以创建一个自定义事件,该事件可以创建或修改sitecore项目以保存某些任务信息(如果愿意,可以将其称为“队列”),然后创建一个自定义任务(计划以预定义的间隔运行)它将从此队列中获取项目并对其进行处理。

据我所知,不可能直接延迟事件。但是有一种方法可以获得您想要延迟执行的自定义代码

您可以创建自定义事件。在自定义事件处理程序中,使用Sitecore作业管理器来执行要以延迟开始的特定方法。通过使用Sitecore作业管理器,您可以通过传递附加参数“InitialDelay”来延迟该方法的执行

在使用远程事件从CMS服务器触发方法后,您还可以使用此命令在CD服务器上延迟执行方法


另请参阅以获取有关Sitecore作业的更多信息。

据我所知,不可能直接延迟事件。但是有一种方法可以获得您希望延迟执行的自定义代码

您可以创建自定义事件。在自定义事件处理程序中,使用Sitecore作业管理器来执行要以延迟开始的特定方法。通过使用Sitecore作业管理器,您可以通过传递附加参数“InitialDelay”来延迟该方法的执行

在使用远程事件从CMS服务器触发方法后,您还可以使用此命令在CD服务器上延迟执行方法


有关Sitecore作业的更多信息,请参见。

Ah,现在看起来很有趣。我将看看是否可以使用它。一个潜在的问题是,我的计划可能会在未来几天内完成。你知道作业是在任何地方保留的,还是只保存在内存中?据我所知,作业是由JobManagerAh保存在内存中的,现在看来是相互关联的正在测试。我会看看是否可以使用它。一个潜在的问题是,我的时间表可能会在未来几天内。你知道作业是否在任何地方被持久化,或者它们只是在内存中吗?据我所知,作业管理器会将作业保存在内存中。我猜你对队列的用途有一些误解。这背后的主要思想是与服务器场中多个安装连接到一个数据库的其他实例通信。我猜您对队列的用途有一些误解。其主要思想是与服务器场中多个安装连接到一个数据库的其他实例通信。
var options = new JobOptions("JobName", "category", "Sitename", "Object Instance 
  which contains the method to execute", "Methodname")  
    { InitialDelay = TimeSpan.FromMinutes(5.0) };

JobManager.Start(options);