2. 开始使用
大多数 Service Broker 应用程序在 Open Service Broker API 端点之外实现 API 或 Web UI 端点。 这些附加终端节点可能提供有关应用程序的信息、提供控制面板 UI 或提供对应用程序行为的控制。 开发人员可以使用 Spring WebFlux 或 Spring MVC 实现这些附加端点。
虽然spring-cloud-open-service-broker在其 API 中使用反应式返回类型,但都阻止了 Web 堆栈(例如 tomcat/jetty 使用spring-boot-starter-web
) 或非阻塞 Web 堆栈(例如使用 netty/undertowspring-boot-starter-webflux
) 支持。查看模块中的相应验收测试spring-cloud-open-service-broker-acceptance-webmvc
和spring-cloud-open-service-broker-acceptance-webflux
.
Spring Cloud Open Service Broker Starters不包括对 Spring WebFlux 或 Spring MVC 的传递依赖项。 需要 Spring Boot Web Starters才能激活自动配置。 |
2.1. Maven 依赖项
要在 Spring Web 应用程序中使用 Spring Cloud Open Service Broker,请添加Starters,如下所示:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-open-service-broker</artifactId>
<version>${version}</version>
</dependency>
</dependencies>
2.2. Gradle 依赖项
要在 Spring Web 应用程序中使用 Spring Cloud Open Service Broker,请添加Starters,如下所示:
dependencies {
api 'org.springframework.cloud:spring-cloud-starter-open-service-broker:${version}'
}
2.3. 配置 Service Broker
请参阅 Spring Boot 文档以开始构建 Spring Boot 应用程序。
该框架提供了实现 Service Broker 所需的大多数组件的默认实现。 在 Spring Boot 方式中,您可以通过提供自己的 Spring bean 实现来覆盖默认行为,并且框架会从其默认值退出。
首先,使用@SpringBootApplication
注解,如下所示:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
这将触发包含默认配置。
2.4. 使用唯一的平台 ID
对 Service Broker 的每个请求都能够接收到platformInstanceId
通过 path 变量。
这允许 Service Broker 检测它已注册到的平台的身份,如 Cloud Foundry 文档中所述。
例如,作员可以将 Service Broker 注册到一个 CF 平台实例,如下所示:
$ cf create-service-broker mybroker username password https://mybroker.app.local/east
作员还可以将同一 Service Broker 注册到另一个 CF 平台实例,如下所示:
$ cf create-service-broker mybroker username password https://mybroker.app.local/west
然后,代理可以预期请求会发送到以下路径,其中platformInstanceId
请求对象中的字段包含值 “east” 或 “west”:
- https://username:[email protected]/east/v2/catalog
- https://username:[email protected]/west/v2/catalog
2.5. 自定义 Service Broker 路径
有时,自定义 Service Broker 路径的前缀非常有用。
例如,您的应用程序可能出于其他目的为冲突的终端节点提供服务。
您可以使用spring.cloud.openservicebroker.base-path
属性更改代理路径的前缀,如下所示:
spring.cloud.openservicebroker.base-path=/broker
前面的application.properties
示例将 Endpoint 从 更改为/
/broker/
(例如,/broker/v2/catalog
).