Cloud Foundry Bind services/cups источник данных количество соединений

Я использую hikari с весенней загрузкой, при локальном тестировании я вижу 50 активных соединений. После развертывания на литейном облаке я вижу только 10 активных соединений.

spring.datasource.hikari.maximum бассейн размер =50

Похоже, что служба литейного связывания в облаке пытается перезаписать конфигурацию моего приложения. Как настроить этот номер в облачном литейном производстве?

может быть, кто-то получит помощь по этой ссылке, он говорит, что если вы работаете с серьезным приложением в производственной среде, вам нужно настроить DataSourceConfiguration

http://cloud.spring.io/spring-cloud-connectors/spring-cloud-spring-service-connector.html

https://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot-in-cloud-foundry

2 ответа

Решение

Если вы в том числе spring-boot-starter-cloud-connectors в вашем проекте свойства базы данных Spring Boot не используются. Spring Cloud Connectors создаст и настроит Datasource bean автоматически, если вы не пишете код Java для его ручной настройки.

Как вы обнаружили в документации по соединителям, вы можете написать подобный код для настройки свойств соединения, включая размер пула.

@Bean
public DataSource dataSource() {
    PoolConfig poolConfig = new PoolConfig(5, 30, 3000);
    DataSourceConfig dbConfig = new DataSourceConfig(poolConfig, null);
    return connectionFactory().dataSource("database-service-name", dbConfig);
}

Если вы хотите использовать Boot-свойства вместо написания подобного кода, вы можете удалить spring-boot-starter-cloud-connectors из вашего проекта и настройте свойства загрузки, используя vcap Свойства, предоставляемые Boot при запуске приложений на CF. Ваш maximum-pool-size свойство должно учитываться, если вы настраиваете соединение таким образом.

Я должен был искать Хикари. Согласно этой статье это пул соединений jdbc.

Я предполагаю, что вы развернули Hikari как приложение в Cloud Foundry и создали из него сервис CUPS. Это верно?

Вы не можете изменить сервис через определение CUPS. Это только создает вам экземпляр этого сервиса.

Попробуйте установить размер пула либо в bootstrap.yml или установив переменные среды в приложении Hikari для передачи значений по умолчанию. Возможно, вам придется настроить приложение для принятия этих переменных во время выполнения.

Если это не сработает, вам, возможно, придется создать своего собственного сервисного брокера или сгенерировать плитку. Это дало бы вам возможность манипулировать сервисом.

Надеюсь это поможет!

Да, коннектор облачной фабрики переопределит ваши свойства, и для его настройки вам нужно будет объявить bean-компонент, как указано в этом ответе. Обратите внимание, что конфигурация для этого была ограничена, и поэтому облачный литейщик представил java-cfenv. Вы можете добавить эту библиотеку в свой build.gradle следующим образом:

implementation 'io.pivotal.cfenv:java-cfenv-boot:2.1.2.RELEASE'

Затем вы можете удалить spring-cloud-spring-service-connector а также spring-cloud-cloudfoundry-connectorбиблиотеки. Любые конфигурации, которые вы объявили в переопределенных bean-компонентах, теперь можно настроить вapplication.propertiesкак и в обычном проекте весенней загрузки. Также не забудьте добавить в свой манифест следующие свойства:

SPRING_PROFILES_ACTIVE: cloud
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '{enabled: false}'

Обратитесь к этому репозиторию, который предоставляет образец того, как вы можете использовать это с Redis.

Другие вопросы по тегам