繁体   English   中英

如何在 Spring Data Solr 中关闭 SolrTemplate

[英]How do I shutdown SolrTemplate in Spring Data Solr

我已经使用 CommandLineRunner 接口编写了一个 Spring Boot 控制台应用程序(版本 2.2.4。Spring-data-solr 版本 4.1.4)。 我连接了一个启动 SolrTemplate 连接的服务。 我使用它对 Solr 索引运行一些查询,然后想关闭应用程序。

当我调试应用程序时,我可以单步执行整个应用程序,但是当应用程序离开 main() 时,它就会挂起。 我假设 SolrTemplate 正在等待另一个查询。 有没有办法关闭 SolrTemplate?

@Configuration
@EnableSolrRepositories(basePackages = { "org.ihc.hdd.serviceExample.facet.repository" })
public class SolrConfig {

    @Value("${spring.data.solr.zk-host}")
    private String zkHost;

    @Bean
    public SolrTemplate solrTemplate() throws Exception {
        String[] zkHosts = this.zkHost.split(",");

        CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder(Arrays.asList(zkHosts), Optional.empty()).build();
        return new SolrTemplate(cloudSolrClient);
    }

}

如何像这样创建CloudSolrClient Bean:

 @Bean
 protected static CloudSolrClient SolrClient() {
     String[] zkHosts = this.zkHost.split(",");
     CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder(Arrays.asList(zkHosts), Optional.empty()).build();

     return new CloudSolrClient(zkHostString);
 }

并将其作为参数传递给SolrTemplate例如:

    @Bean
    public SolrTemplate solrTemplate(CloudSolrClient cloudSolrClient) throws Exception {
    return new SolrTemplate(cloudSolrClient);
   }

然后关闭CloudSolrClient这很可能会用它终止模板

    if(cloudSolrClient != null)
         cloudSolrClient.close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM