Как настроить весеннее приложение для подключения к Elasticsearch в PCF
У меня есть приложение Spring, которое работает нормально при подключении к моему локальному серверу Elasticsearch. Хост и порт настроены в application.properties
файл. Мне даже не нужен ElasticsearchConfig.java
файл для реализации elasticsearchTemplate()
боб.
Затем я попытался отправить его в Pivotal Cloud Foundry. Сначала я создал простой сервис es-small, затем отредактировал manifest.yml
файл, чтобы привязать приложение к этому маленькому сервису. Я также использовал пустой файл application.properties, предполагая, что информация о соединении будет автоматически получена. Однако после того, как я сделал "cf push", приложение не запустилось. Сообщение об ошибке: "Не доступен бин с именем "asticsearchTemplate" ".
Я пытался добавить новый appplication.yml
файл как:
spring:
datasource:
url: ${vcap.services.es-small.credentials.host}
username: ${vcap.services.es-small.credentials.username}
password: ${vcap.services.es-small.credentials.password}
Но я получаю сообщение об ошибке типа "Имя или служба не известны":
2018-10-12T22:14:58.72-0700 [APP/PROC/WEB/0] OUT Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'client' defined in class path resource [com/javatechstack/datajpa/ElasticSearchConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.elasticsearch.client.Client]: Factory method 'client' threw exception; nested exception is java.net.UnknownHostException: http://d412092.service.dc1.a9s-elasticsearch-consul:9200: Name or service not known
После связывания и использования "cf env " моя информация о VCAP выглядит следующим образом:
{
"VCAP_SERVICES": {
"a9s-elasticsearch6": [
{
"credentials": {
"dns_servers": [
"192.168.24.4",
"192.168.24.5",
"192.168.24.6"
],
"host": [
"http://d412092.service.dc1.a9s-elasticsearch-consul:9200"
],
"host_ip": [
"http://192.168.28.8:9200"
],
"password": "a9s5d93c1563f60d0702e6ca24928993aae76948a00",
"username": "a9s96eb080f8089c5fa32f214e9d8e7c6752de7db0a"
},
"label": "a9s-elasticsearch6",
"name": "es-small",
"plan": "elasticsearch-single-small",
"provider": null,
"syslog_drain_url": null,
"tags": [
"searchengine"
],
"volume_mounts": []
}
]
}
}
И я также добавил ElasticsearchConfig.java, как показано ниже:
public class ElasticSearchConfig {
//@Value("${elasticsearch.host}")
@Value("${vcap.services.es-small.credentials.host}")
private String EsHost;
/*
//@Value("${elasticsearch.port}")
@Value("${vcap.services.es-small.credentials.username}")
private int EsPort;
//@Value("${elasticsearch.clustername}")
@Value("${vcap.services.es-small.credentials.password}")
private String EsClusterName;
*/
@Bean
public Client client() throws Exception {
return new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(EsHost), 9300));
}
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws Exception {
return new ElasticsearchTemplate(client());
}
}
Кто-нибудь может предоставить какую-либо информацию о том, как настроить информацию о соединении VCAP для моего кода весенней загрузки приложения? Я ищу, но не могу найти его в Интернете.