Несколько раз назад у меня была задача использовать два независимых экземпляра Apache Solr в одном приложении.Я пытался найти некоторую информацию, но безрезультатно.Эта статья о том, как настроить доступ к нескольким независимым Apache Solr и получить к ним доступ через различные репозитории с помощью Spring Data.
Solr config
Вам необходимо иметь независимую конфигурациюдля каждого Solr.Например:
@Configuration
@EnableSolrRepositories(basePackages = {"com.project.repository.first"},
solrClientRef = "firstSolrClient",
solrTemplateRef = "firstSolrTemplate")
public class FirstSolrConfig {
@Value("${solr.first.url}")
private String solrHost;
@Bean
public SolrClient solrClient() {
return new HttpSolrClient.Builder(solrHost).build();
}
@Bean("firstSolrTemplate")
public SolrTemplate solrTemplate() {
return new SolrTemplate(this::solrClient);
}
}
-
@Configuration
@EnableSolrRepositories(basePackages = {"com.project.repository.second"},
solrClientRef = "secondSolrClient",
solrTemplateRef = "secondSolrTemplate")
public class SecondSolrConfig {
@Value("${solr.second.url}")
private String solrHost;
@Bean("secondSolrClient")
public SolrClient solrClient() {
return new HttpSolrClient.Builder(solrHost).build();
}
@Bean("secondSolrTemplate")
public SolrTemplate solrTemplate() {
return new SolrTemplate(this::solrClient);
}
}
SolrClient Bean из первой конфигурации ДОЛЖЕН иметь имя "solrClient"!В противном случае вы не сможете поднять контекст Spring.Вы должны поместить свои репозитории в разные пакеты.
Это единственный способ, который я нашел для этого случая.