Как настроить весеннее приложение для подключения к Elasticsearch в PCF - PullRequest
0 голосов
/ 13 октября 2018

У меня есть приложение Spring, которое работает нормально при подключении к моему локальному серверу Elasticsearch.Хост и порт настроены в файле application.properties.Мне даже не нужен файл ElasticsearchConfig.java для реализации компонента elasticsearchTemplate().

Затем я попытался отправить его в Pivotal Cloud Foundry.Сначала я создал простой сервис es-small, затем отредактировал файл manifest.yml, чтобы привязать приложение к этому es-small сервису.Я также использовал пустой файл application.properties, предполагая, что информация о соединении будет автоматически получена.Однако после того, как я нажал «cf push», приложение не запустилось.Сообщение об ошибке: «Не доступен bean-компонент с именем "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 для моего кода весенней загрузки?Я ищу, но не могу найти его в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...