7.2.4. Worker 配置


Hibernate Search 可通过 worker 配置与 Lucene 进行交互。有几个架构组件和可能的扩展点。让我们来详细了解一下.

使用 worker 配置优化 Infinispan Query 与 Lucene 交互的方式。此配置中有多种架构组件和可能的扩展点。

首先有一名 工作者Worker 界面的实施负责接收所有实体更改,按照上下文排队,并在上下文结束时应用它们。最为直观的上下文(特别是在与 ORM 的连接时)就是事务。因此,Hibernate Search 默认使用 TransactionalWorker 来限制每次事务的所有更改。但是,可以想象一下上下文取决于实体数量或其它应用程序生命周期事件的情况。

Expand
表 7.1. 范围配置
属性描述

hibernate.search.worker.scope

要使用的 工作程序 实施的完全限定类名称。如果未设置此属性,则使用默认的 TransactionalWorker,或 进行交易

hibernate.search.worker.*

前缀为 hibernate.search.worker 的所有 配置属性均在初始化过程中传递给工作程序。这允许添加自定义的 worker 特定参数。

hibernate.search.worker.batch_size

定义每个上下文所批处理索引操作的最大数量。旦达到限制,即使上下文尚未结束,也会触发索引。只有 工作程序 实施将排队的队列处理程序委派给批处理队列程序(Trach alWorker 所执行的操作)时才有效。

上下文结束后,应准备和应用索引更改。这可以在新线程内同步或异步完成。同步更新具有索引始终与数据库同步的优势。另一方面,异步更新可以帮助最小化用户响应时间。缺点是数据库和索引状态之间可能存在差异。

注意

以下选项在每个索引上可能会有所不同;实际上,它们需要 indexName 前缀或使用 default 来为所有索引设置默认值。

Expand
表 7.2. 执行配置
属性描述

hibernate.search.<indexName>.worker.execution

同步 :同步执行(默认)

async :异步执行

hibernate.search.<indexName>.worker.thread_pool.size

后端可以使用线程池并行应用来自同一事务上下文(或批处理)的更新。默认值为 1。如果您每次事务都有多个操作,则可以使用更大的值进行试验。

hibernate.search.<indexName>.worker.buffer_queue.max

定义线程池不足时的最大工作队列数。仅适用于异步执行.默认为无限.如果达到限制,则工作由主线程完成。

目前,所有工作都在同一个虚拟机(VM)中完成,无论哪种执行模式。单个虚拟机的工作总量还没有改变。幸运的是,有一个更好的方法,即委派。通过配置 hibernate.search.default.worker.backend,可以将索引工作发送到其他服务器。同样,这个选项可以针对每个索引配置不同。

Expand
表 7.3. 后端配置
属性描述

hibernate.search.<indexName>.worker.backend

Luc ene:在同一虚拟机中运行索引更新的默认后端。也会在 属性未定义或为空时使用。

JMS: Java 消息传递服务后端.索引更新发送到 Java 消息传递服务队列,由索引 master 处理。 有关此设置的更多配置选项和更多详情,请参阅 Java 消息传递服务后端配置

Blackhole :主要是一个 test/developer 设置,忽略所有索引工作

您还可以指定实施 BackendQueueProcessor 的类的完全限定名称。这样,您可以实施自己的通信层。实施负责返回 可运行 的实例,执行时将处理索引工作。

  1. Java 消息传递服务后端配置
Expand

属性

描述

hibernate.search.<indexName>.worker.jndi.*

定义 Java 命名和目录接口属性,以启动 InitialContext(如有必要)。Java 命名和目录接口仅供 Java 消息传递服务后端使用。

hibernate.search.<indexName>.worker.jms.connection_factory

Java 消息传递服务后端必填.定义 Java 命名和目录接口名称,从中查找 Java 消息传递服务连接工厂(红帽 JBoss 企业应用平台中默认为/ConnectionFactory

hibernate.search.<indexName>.worker.jms.queue

Java 消息传递服务后端必填.定义 Java 命名和目录接口名称,从中查找 Java 消息传递服务队列。该队列将用于发布工作消息。

警告

正如您可能注意到的,一些显示的属性是相关联的,这意味着并非所有属性值组合都有意义。实际上,您可以生成非功能配置。这在您自己提供部分显示接口的实现的情况下尤为正确。在编写自己的工作 程序或 后端队列程序实施 前,请务必研究现有的代码。

7.2.4.1. Jakarta Messaging Master/Slave Backd

这部分论述了如何配置主/从 Hibernate Search 架构。

图 7.3. Jakarta 消息传递后端配置

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat