我有一个关于 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
为我做吗?)
你能告诉我它是怎么工作的吗?任何代码或文件的链接将非常感谢,因为我找不到任何。
谢谢您!
1条答案
按热度按时间r55awzrz1#
spring data elasticsearch从不关闭客户端,因为它不会创建客户端,而是在配置中创建客户端。
就像链接的文档所述:
当您很好地完成了高级客户机时,应该关闭它
spring data elasticsearch无法知道您的应用程序是否以及何时不再需要与elasticsearch的连接。
所以你可以保留一个对客户的引用,如果你认为你真的不需要的话就关闭它。但此后,对elasticsearchoperations或存储库的任何调用都将失败。
实际上我从来没有听说过这样的问题,因为在一个应用程序中浪费了这个类的一个示例的资源,我想说不要费心去关闭它。