Как отключить SolrTemplate в Spring Data Solr - PullRequest
1 голос
/ 18 февраля 2020

Я написал консольное приложение Spring Boot (версия 2.2.4. Spring-data-solr версия 4.1.4) с использованием интерфейса CommandLineRunner. Я подключился к сервису, который запускает соединение 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);
    }

}

1 Ответ

0 голосов
/ 24 апреля 2020

Как насчет создания 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 like:

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

, а затем закрытия CloudSolrClient который, скорее всего, прекратит использование шаблона

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