对象生命周期和线程安全
编辑对象生命周期和线程安全编辑
Java API 客户端中有五种不同生命周期的对象。
- 对象映射器
- 无状态且线程安全,但创建成本可能很高。它通常是应用程序启动时创建的单例,用于创建传输。
- 传输
- 线程安全,通过底层 HTTP 客户端持有网络资源。传输对象与 Elasticsearch 集群相关联,必须显式关闭以释放底层资源,例如网络连接。
- 客户端
- 不可变、无状态且线程安全。这些是非常轻量级的对象,它们只是包装了一个传输并提供 API 端点作为方法。
- 构建器
- 可变、非线程安全。构建器是瞬态对象,在调用
build()
后不应重用。 - 请求和其它 API 对象
- 不可变、线程安全。如果您的应用程序反复使用相同的请求或请求的相同部分,则可以预先准备这些对象,并在多个客户端(具有不同的传输)上跨多个调用重复使用。