in-spring data elasticsearch with high level rest client,restclient何时关闭?

jucafojl  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(840)

我有一个关于 High Level REST Client 以及 spring-data-elasticsearch .
在我的spring boot项目中,我创建了 RestClientConfig 对于连接,

// Config file
@Configuration
@EnableElasticsearchAuditing
public class RestClientConfig extends AbstractElasticsearchConfiguration {
    @Value("${spring.data.elasticsearch.client.reactive.endpoints}")
    private String endpoint;
    @Value("${spring.data.elasticsearch.client.reactive.username}")
    private String username;
    @Value("${spring.data.elasticsearch.client.reactive.password}")
    private String pwd;

    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
            .connectedTo(endpoint)
            .withBasicAuth(username, pwd)
            .build();

        return RestClients.create(clientConfiguration).rest();
    }
}

以及使用 ElasticSearchRepository 向集群发送一些请求。

// repository
public interface TestRepository extends ElasticsearchRepository<Test, String> {
}

// I use the repository for whole request to the elasticsearch cluster 
testRepo.save(/* object */)

当然效果不错,不过,我真的很好奇客户什么时候关门(我知道,我应该在完成工作后关闭rest客户机。我必须自己关闭它吗?(如果是,什么时候?) spring-data-elasticsearch 为我做吗?)
你能告诉我它是怎么工作的吗?任何代码或文件的链接将非常感谢,因为我找不到任何。
谢谢您!

r55awzrz

r55awzrz1#

spring data elasticsearch从不关闭客户端,因为它不会创建客户端,而是在配置中创建客户端。
就像链接的文档所述:
当您很好地完成了高级客户机时,应该关闭它
spring data elasticsearch无法知道您的应用程序是否以及何时不再需要与elasticsearch的连接。
所以你可以保留一个对客户的引用,如果你认为你真的不需要的话就关闭它。但此后,对elasticsearchoperations或存储库的任何调用都将失败。
实际上我从来没有听说过这样的问题,因为在一个应用程序中浪费了这个类的一个示例的资源,我想说不要费心去关闭它。

相关问题