Я пишу простую очередь, которая отправляет запросы на обновление в ядро Solr DataImportHandler
. Этот обработчик обновляет ядро Solr, выполняя запрос к базе данных. Когда одно обновление завершено, я хотел бы немедленно отправить следующий запрос на обновление. Однако у меня возникли проблемы с определением, когда Solr готов принять другой запрос на обновление. Вот что я пробовал:
Событие
onImportEnd
. Использование событияonImportEnd
казалось наиболее очевидным способом. Я создал собственный прослушиватель событий, который отправляет сетевой запрос моему приложению, чтобы указать, что Solr готов принять другой запрос. К сожалению, кажется, что это событие вызывается после импорта Solr, но до его статусidle
. Если мое приложение делает второй запрос сразу после событияonImportEnd
, запрос возвращается со статусом «занят».Событие
postCommit
. Я создал событие.exe
, которое запускается при событииpostCommit
. Похоже, что этот исполняемый файл запускается во время процесса импорта — Solr не возвращается в состояние ожидания, пока этот исполняемый файл не будет завершен.Событие
postOptimize
: это событие никогда не вызывается.Опрос изменений статуса: этот метод будет работать, но будет означать задержку между каждым запросом на обновление. Я бы хотел, чтобы эти запросы выполнялись как можно быстрее.
Есть ли другой способ определить, когда Solr готов принять другой запрос на обновление?