5.2. 自定义 API 服务注解值

Maven Fabric8 插件默认运行 Fabric8 服务发现功能。增强器向 Fuse Rest DSL 项目的 API 服务添加了注解,以便 API 服务可以被 3scale 发现,如 Red Hat 3scale API 管理 管理门户 指南中的使用 服务发现 所述。

增强器对一些注解使用默认值,并从项目的 camel-context.xml 文件中获取其他注解的值。

您可以通过在 Fuse 项目 pom.xml 文件或 service.yml 文件中定义值来覆盖 camel-context.xml 文件中定义的默认值和值。(如果您在两个文件中定义值,增强器将使用 service.yml 文件中的值。) 有关您可以为 Fabric8 服务发现功能增强 器指定的元素的信息,请参阅 Fabric8 服务发现功能丰富的元素。

流程

在 Fuse 项目 pom.xml 文件中指定注解值:

  1. 在您选择的编辑器中打开 Fuse 项目的 pom.xml 文件。
  2. 找到 fabric8-maven-plugin 依赖项,如下例所示:

    <plugin>
            <groupId>org.jboss.redhat-fuse</groupId>
            <artifactId>fabric8-maven-plugin</artifactId>
            <version>${fuse.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>resource</goal>
                  <goal>build</goal>
                </goals>
              </execution>
            </executions>
      </plugin>
  3. 将 Fabric8 服务发现功能作为依赖项添加到 Fabric8-Maven 插件,如下例所示。

    <plugin>
      <groupId>org.jboss.redhat-fuse</groupId>
      <artifactId>fabric8-maven-plugin</artifactId>
      <version>${fuse.version}</version>
      <executions>
        <execution>
          <goals>
            <goal>resource</goal>
            <goal>build</goal>
          </goals>
        </execution>
      </executions>
      <dependencies>
        <dependency>
          <groupId>io.acme</groupId>
          <artifactId>myenricher</artifactId>
          <version>1.0</version>
          <configuration>
            <enricher>
              <config>
                <f8-service-discovery>
                  <scheme>https</scheme>
                  <path>/api</path>
                  <descriptionPath>/api/openapi.json</descriptionPath>
                </f8-service-discovery>
              </config>
            </enricher>
          </configuration>
          </dependency>
      </dependencies>
    </plugin>
  4. 保存您的更改。

或者,您可以使用 src/main/fabric8/service.yml 片段覆盖注解值,如下例所示:

kind: Service
name:
metadata:
  labels:
    discovery.3scale.net/discoverable : "true"
  annotations:
    discovery.3scale.net/discovery-version : "v1"
    discovery.3scale.net/scheme : "https"
    discovery.3scale.net/path : "/api"
    discovery.3scale.net/port : "443"
    discovery.3scale.net/description-path : "/api/openapi.json"
spec:
  type: LoadBalancer