使用spring-cloud-cloudfoundry-service-broker
我们开发了一个service broker
。
最初我们在application.yml
文件中定义了目录项,它被捆绑在jar里面,这一切都很好。通过manifest.yml文件配置目录项
我们没有在jar文件中捆绑目录项,而是在推送服务时通过manifest.yml
文件提供给cloud foundry
。 但不幸的是,应用程序未获取manigest.yml
文件中指定的目录项目。您能否让我们知道我们如何通过manifest.yml
文件提供商品目录?
我在这里复制了我的代码片段。
CatalogConfig.java
@ConfigurationProperties(prefix = "catalog")
@Component
public class CatalogConfig {
private List<ServiceDefinitionProxy> services;
public CatalogConfig() {
super();
}
@Bean
Catalog catalog() {
return new Catalog(services.stream().map(s -> s.unproxy())
.collect(Collectors.toList()));
}
public CatalogConfig(List<ServiceDefinitionProxy> services) {
super();
this.services = services;
}
public List<ServiceDefinitionProxy> getServices() {
return services;
}
public void setServices(List<ServiceDefinitionProxy> services) {
this.services = services;
}
public ServiceDefinitionProxy findServiceDefinition(String serviceId) {
return services.stream().filter(s -> s.getId().equals(serviceId))
.findFirst().get();
}
}
Manifest.yml
---
applications:
- name: my-service-broker
memory: 512M
instances: 1
host: my-service-broker
path: target/my-service-broker-1.0.0-SNAPSHOT.jar
env:
SPRING_PROFILES_DEFAULT: cloud
catalog:
services:
- id: f1478faa-d980-11e5-b5d2-0a1d41d68578
name: api-marketpace
description: API Marketplace
bindable: true
planUpdatable: true
head-type: api
tags:
- api
- Manage API Marketplace
metadata:
displayName: API Marketplace
imageUrl: https://my-service-broker.cf.com/images/logo.PNG
longDescription: API Marketplace.
providerDisplayName: API Team
documentationUrl: https://wikihub.com/display/ASC/Training
supportUrl: https://wikihub.com/display/ASC/Training
plans:
- id: f1478faa-d980-11e5-b5d2-0a1d41d68579
name: unlimited
description: free
metadata:
costs:
- amount:
usd: 0.00
unit: PER MONTH
bullets:
- Basic Unlimited
dashboardClient:
id: api-marketpace
secret: secret
redirectUrl: https://api.cf.com/
感谢Scott的快速回复。无论如何,我们可以通过清单文件将目录项作为环境变量发送。如果它只是一个字符串,我可以设法通过清单文件将该属性发送给我的配置类,但由于目录项是列表,我不知道如何将它作为环境变量发送。让我知道是否有任何可能! – Dombe
您可以使用manifest.yml中的“env”块指定应用程序中设置的env vars,就像您在上面的示例中使用“SPRING_PROFILES_DEFAULT:cloud”env var一样。 –
但是,我们如何将目录项目指定为环境变量?我认为所有的环境变量都是String类型,但目录项是列表。 – Dombe