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