3.2. Настройка вызова процесса индексирования

Для периодического вызова процесса индексирования удобно воспользоваться механизмом назначенных заданий фреймворка CUBA.

Сначала необходимо активировать весь механизм запуска задач. Добавьте в файл app.properties модуля core проекта приложения следующее свойство:

cuba.schedulingActive = true

Перезапустите сервер приложения, войдите в систему пользователем admin, откройте экран JMX Console, найдите и откройте JMX-бин app-core.cuba:type=Scheduling и убедитесь, что атрибут Active имеет значение true.

Далее откройте экран AdministrationScheduled Tasks, нажмите Create и задайте следующие значения атрибутов новой задачи:

  • Defined by: Bean

  • Bean name: cuba_FtsManager

  • Method name: processQueue()

  • Singleton: false

  • Period, sec: 30

Сохраните задачу, выделите ее в таблице и нажмите Activate. С этого момента каждые 30 секунд будет вызываться процесс индексирования измененных сущностей.

Tip

При работе с кластером серверов приложения, каждый сервер, предоставляющий функциональность поиска, должен поддерживать свою копию индекса. Для этого:

  1. Перечислите все сервера кластера в свойстве приложения fts.indexingHosts.

  2. Убедитесь что задача индексации, сконфигурированная выше, не имеет признака Singleton.

После этого изменения будут ставится в очередь для каждого сервера по отдельности; сервера будут брать из очереди свои собственные записи и обновлять свои индексы.

Warning

Автоматическое индексирование не затрагивает сущности, созданные до его запуска. Для постановки таких сущностей в очередь на индексацию воспользуйтесь методами reindexAll() или asyncReindexAll() JMX-бина app-core.fts:type=FtsManager. Подробнее см. Запуск и настройка переиндексации сущностей.