7.2.4.3. Master 节点
每个索引更新操作都从 Jakarta 消息传递队列执行并执行。主索引定期复制。
执行 Jakarta Messaging 队列中的索引更新操作,并定期复制主索引。
Jakarta 消息传递服务主配置
### master configuration
## DirectoryProvider
# (remote) master location where information is copied to
hibernate.search.default.sourceBase = /mnt/mastervolume/lucenedirs/mastercopy
# local master location
hibernate.search.default.indexBase = /Users/prod/lucenedirs
# refresh every half hour
hibernate.search.default.refresh = 1800
# appropriate directory provider
hibernate.search.default.directory_provider = filesystem-master
## Back-end configuration
#Back-end is the default for Lucene
除了 Hibernate Search 框架配置外,还必须编写和设置消息驱动型 Bean,以便通过 Jakarta Messaging 处理索引工作队列。
消息驱动的 Bean 处理索引队列
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName="destinationType",
propertyValue="javax.jms.Queue"),
@ActivationConfigProperty(propertyName="destination",
propertyValue="queue/hibernatesearch"),
@ActivationConfigProperty(propertyName="DLQMaxResent", propertyValue="1")
} )
public class MDBSearchController extends AbstractJMSHibernateSearchController
implements MessageListener {
@PersistenceContext EntityManager em;
//method retrieving the appropriate session
protected Session getSession() {
return (Session) em.getDelegate();
}
//potentially close the session opened in #getSession(), not needed here
protected void cleanSessionIfNeeded(Session session)
}
}
本例继承了 Hibernate Search 源代码中提供的抽象 Jakarta 消息传递控制器类,并实施 Jakarta EE MDB。此实施以示例形式提供,并可通过利用非 Jakarta EE 消息驱动型 Bean 而进行调整。