2015-11-06 81 views
2

我是新增的hibernate搜索功能,我为我的应用程序使用hibernate搜索5.3。我有一个应该维护lucene索引的服务器集群,如果实体有变化,我试图把它放在一个jms队列中,让所有其他服务器从这里提取更新并重新索引它们的lucene索引。如何在Hibernate搜索中使用JMS主题在服务器群集中重新索引lucene索引5.3

我已经写了一个searchInterceptor,它会在每次事务之后拿起实体并将它们发送给一个主题。我已经扩展了FullTextIndexEventListener并实现了processWork()在队列中添加消息,现在我被卡住了,因为这已经是最终的了。 任何人都可以告诉我如何从这里出发?

回答

0

你为什么不选择Search提供的主/从设置的任何原因,例如JMS主/从设置,其中索引是由单个主设备完成的,然后将索引共享给从设备?

但是如果你想继续w /你的方法,我会认为正确的扩展点是一个BackendQueueProcessor。您可能需要混合使用LuceneBackendQueueProcessorJmsBackendQueueProcessor,其中传入的更改会在本地建立索引并放到所有其他节点的JMS主题上。或者为了保持体系结构的对称性,通常可以将所有更新都更新到主题上,并且所有节点仅适用于该主题。无论哪种方式,当前的JMS后端代码应该能够引导您进入正确的方向。

+0

谢谢。不使用主/从设置,因为我们不想配置新的主设备使其停机。 –

+0

嗨,只是一个问题:如果使用JMS主题让其他节点知道插入/ ...是否有可能发生写入锁定问题(读取JMS消息并尝试更新索引,但同时实体被创建/更新,因此索引被Hibernate Search刷新=> 2个进程尝试锁定相同的索引)?谢谢,五, – Viktor

+0

嗨维克托, 索引在每个服务器中单独维护,因此没有锁定问题:) –