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