Перестроить индекс поиска Sitecore и базу данных ссылок в фоновом процессе

У нас есть поэтапная среда с 1 CMS и 3 подчиненными серверами.

Я хочу создать страницу на подчиненном сервере, которая будет вызываться промежуточным модулем при успешной публикации, что позволит перестроить все индексы и базу данных ссылок.

Я знаю, что могу использовать:

Globals.LinkDatabase.Rebuild(Factory.GetDatabase("web"));

для восстановления базы данных ссылок.

Как получить приведенный выше код в отдельном процессе, имеющем доступ к контексту sitecore, а также как перестроить все индексы для веб-базы данных — опять же в отдельном фоновом потоке.

Спасибо


person marto    schedule 07.07.2009    source источник


Ответы (1)


Я сталкивался с этой проблемой раньше с Sitecore и использовал немного другой подход. Вместо страницы, которую вызывает промежуточный модуль, я воспользовался событием publish:end и добавил собственный обработчик для перестроения базы данных ссылок.

<event name="publish:end">
    <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache">
        <sites hint="list">
            <site>website</site>
        </sites>
    </handler>
    <handler type="Sitecore.EventHandlers.CredentialCacheClearer, Sitecore.EventHandlers" method="ClearCache">
        <sites hint="list">
            <site>website</site>
        </sites>
    </handler>

    // Custom Publish Action Below
    <handler type="Customized.Publish.LinkDatabase, Customized" method="Process"/>
</event>
namespace Customized.Publish
{
    public class LinkDatabase
    {
        /// <summary>
        /// Rebuild the web link database.
        /// </summary>

        public void Process()
        {
            // Web db
            Sitecore.Globals.LinkDatabase.Rebuild(Sitecore.Configuration.Factory.GetDatabase("web"));
        }

        /// <summary>
        /// For invoking as an event, typically publish:end.
        /// </summary>
        public void Process(object sender, EventArgs args)
        {
            this.Process();
        }
    }
}
person Trevor    schedule 09.07.2009