2015-11-06 6 views
2

Я новичок в поиске в спящем режиме, и я использую hibernate search 5.3 для своего приложения. У меня есть кластер серверов, который должен поддерживать индекс lucene, и если есть изменение в entitty, я пытаюсь помещать его в очередь jms и позволять всем другим серверам извлекать обновления отсюда и переиндексировать их индексы lucene.Как переиндексировать индекс lucene в кластере серверов с использованием темы JMS в режиме спящего режима 5.3

Я написал поискИнтерцептор, который будет собирать сущности после каждой транзакции и отправлять их в тему. Я расширил FullTextIndexEventListener и внедрил processWork() для добавления сообщений в очередь, теперь я застрял, потому что теперь это стало окончательным. Может ли кто-нибудь сказать мне, как исходить отсюда?

ответ

0

Любая причина, по которой вы не выбираете настройку ведущего/ведомого, предоставляемую Search, например, настройку ведущего/ведомого JMS, где индексирование выполняется одним ведущим, а индекс затем делится на подчиненные устройства?

Но если вы хотите продолжить свой подход, я бы подумал, что правильная точка расширения - это BackendQueueProcessor. Вам либо требуется сочетание LuceneBackendQueueProcessor и JmsBackendQueueProcessor, где входящие изменения индексируются локально и помещаются в тему JMS для всех других узлов. Или, чтобы сохранить симметричную архитектуру, вы могли бы, как правило, все обновления на тему, и все узлы применяются только в этом разделе. В любом случае, текущий код JMS-сервера должен иметь возможность направлять вас в правильном направлении.

+0

Спасибо. Не использовать настройку ведущий/ведомый, потому что мы не хотим настраивать новый мастер, если он не работает. –

+0

Привет, только вопрос: если вы используете JMS-тему, чтобы другие узлы знали о вставке/... возможно ли, что возникает проблема блокировки записи (чтение сообщения JMS и попытка обновления индекса, но в то же время объект создается/обновляется, поэтому индекс обновляется с помощью Hibernate Search => 2 процесса пытаются заблокировать один и тот же индекс)? Спасибо, В. – Viktor

+0

Hi Victor, Индекс поддерживается индивидуально на каждом из серверов, поэтому никаких проблем с блокировкой :) –