7.2.4. Worker 配置
Hibernate Search 可通过 worker 配置与 Lucene 进行交互。有几个架构组件和可能的扩展点。让我们来详细了解一下.
使用 worker 配置优化 Infinispan Query 与 Lucene 交互的方式。此配置中有多种架构组件和可能的扩展点。
首先有一名 工作者
。Worker
界面的实施负责接收所有实体更改,按照上下文排队,并在上下文结束时应用它们。最为直观的上下文(特别是在与 ORM 的连接时)就是事务。因此,Hibernate Search 默认使用 TransactionalWorker
来限制每次事务的所有更改。但是,可以想象一下上下文取决于实体数量或其它应用程序生命周期事件的情况。
属性 | 描述 |
---|---|
|
要使用的 |
|
前缀为 |
|
定义每个上下文所批处理索引操作的最大数量。旦达到限制,即使上下文尚未结束,也会触发索引。只有 |
上下文结束后,应准备和应用索引更改。这可以在新线程内同步或异步完成。同步更新具有索引始终与数据库同步的优势。另一方面,异步更新可以帮助最小化用户响应时间。缺点是数据库和索引状态之间可能存在差异。
以下选项在每个索引上可能会有所不同;实际上,它们需要 indexName 前缀或使用 default
来为所有索引设置默认值。
属性 | 描述 |
---|---|
|
|
| 后端可以使用线程池并行应用来自同一事务上下文(或批处理)的更新。默认值为 1。如果您每次事务都有多个操作,则可以使用更大的值进行试验。 |
| 定义线程池不足时的最大工作队列数。仅适用于异步执行.默认为无限.如果达到限制,则工作由主线程完成。 |
目前,所有工作都在同一个虚拟机(VM)中完成,无论哪种执行模式。单个虚拟机的工作总量还没有改变。幸运的是,有一个更好的方法,即委派。通过配置 hibernate.search.default.worker.backend
,可以将索引工作发送到其他服务器。同样,这个选项可以针对每个索引配置不同。
属性 | 描述 |
---|---|
|
您还可以指定实施 |
- Java 消息传递服务后端配置
属性 | 描述 |
| 定义 Java 命名和目录接口属性,以启动 InitialContext(如有必要)。Java 命名和目录接口仅供 Java 消息传递服务后端使用。 |
|
Java 消息传递服务后端必填.定义 Java 命名和目录接口名称,从中查找 Java 消息传递服务连接工厂(红帽 JBoss 企业应用平台中默认为 |
| Java 消息传递服务后端必填.定义 Java 命名和目录接口名称,从中查找 Java 消息传递服务队列。该队列将用于发布工作消息。 |
正如您可能注意到的,一些显示的属性是相关联的,这意味着并非所有属性值组合都有意义。实际上,您可以生成非功能配置。这在您自己提供部分显示接口的实现的情况下尤为正确。在编写自己的工作 程序或
后端队列程序实施
前,请务必研究现有的代码。
7.2.4.1. Jakarta Messaging Master/Slave Backd 复制链接链接已复制到粘贴板!
这部分论述了如何配置主/从 Hibernate Search 架构。
图 7.3. Jakarta 消息传递后端配置