参考指南

本节为您提供开箱即用的春季云流应用的详细概述。 它假设你熟悉 Spring Cloud Stream 的通用概念,这些内容可以在 Spring Cloud Stream 参考文档中找到。spring-doc.cadn.net.cn

这些 Spring Cloud Stream 应用为你提供了开箱即用的 Spring Cloud Stream 工具应用,你可以独立运行,也可以配合 Spring Cloud 数据流运行。包括:spring-doc.cadn.net.cn

您可以在本指南的以下章节中找到所有申请及其选项的详细列表。spring-doc.cadn.net.cn

大多数这些应用基于暴露为java.util.function元件。 您可以通过阅读这份README了解更多关于这些基础组件及其与应用的关联。spring-doc.cadn.net.cn

1. 预构建应用程序

开箱即用应用是 Spring Boot 应用程序,它们在应用的基本逻辑(例如函数)之上包含了绑定器实现——一个功能齐全的 uber-jar。这些 uber-jar 包含了独立执行所需的最小代码。对于每个函数应用,项目都提供了预构建的 Apache Kafka 和 Rabbit MQ Binder 版本。spring-doc.cadn.net.cn

预构建的应用程序是根据流应用生成器 Maven 插件生成的。

2. 分类

根据其目标应用类型,它们可以是:spring-doc.cadn.net.cn

  • 一个连接到外部资源以轮询并接收发布到默认“输出”通道的数据源;spring-doc.cadn.net.cn

  • 一个处理器接收来自“输入”通道的数据并进行处理,并将结果发送到默认的“输出”通道;spring-doc.cadn.net.cn

  • 一个连接外部资源、将接收数据发送到默认“输入”通道的汇入器。spring-doc.cadn.net.cn

预构建的应用程序遵循以下命名规范:<功能>-<类型>-<binder>. 例如兔子水槽卡夫卡是一个使用Kafka绑定器运行的兔子水槽,而Kafka作为中间件运行。spring-doc.cadn.net.cn

2.1. Maven 访问

应用程序的核心功能以函数形式提供。参见 Java 函数部分流式应用更多详情请见仓库。预构建的应用程序可以作为 Maven 工件形式提供。你可以从 Spring Maven 仓库下载可执行的 jar 工件。托管发布版本的 Maven 仓库的根目录是 repo.spring.io/release/org/springframework/cloud/stream/app/。从那里,你可以访问特定应用的最新发布版本。如果你想直接在自定义应用中使用函数,这些工件可以在目录结构下获取org/springframework/cloud/fn. 你需要分别使用发布里程碑快照仓库位置来存放发布、里程碑和快照可执行的jar伪影。spring-doc.cadn.net.cn

2.2. Docker 访问

应用程序的 Docker 版本可在 Docker Hub 中获得,地址为hub.docker.com/r/springcloudstream/. 命名和版本控制遵循与 Maven 相同的一般惯例——例如:spring-doc.cadn.net.cn

docker pull springcloudstream/cassandra-sink-kafka

前面的命令是拉取带有 Kafka 绑定器的最新 Cassandra Sink Docker 映像。spring-doc.cadn.net.cn

3. 对预构建应用程序进行修补

3.1. 添加新的依赖

如果你想修补预构建的应用程序以适应新增依赖的添加,可以参考以下示例。补充MySQLDrivers到他JDBC汇应用:spring-doc.cadn.net.cn

  1. github.com/spring-cloud/stream-applications 克隆GitHub仓库spring-doc.cadn.net.cn

  2. 找到你想打补丁的模块,添加额外的依赖,JDBC汇在这种情况下。例如,你可以在应用生成器插件的配置中添加以下 mysql 依赖,pom.xml:spring-doc.cadn.net.cn

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.37</version>
  </dependency>

这就是完整的插件配置应该呈现的样子。spring-doc.cadn.net.cn

 <plugin>
    <groupId>org.springframework.cloud.stream.app.plugin</groupId>
    <artifactId>spring-cloud-stream-app-maven-plugin</artifactId>
    <configuration>
        <generatedApp>
            <name>jdbc</name>
            <type>sink</type>
            <version>${project.version}</version>
            <configClass>org.springframework.cloud.fn.consumer.jdbc.JdbcConsumerConfiguration.class</configClass>
        </generatedApp>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.37</version>
              </dependency>
            <dependency>
                <groupId>org.springframework.cloud.fn</groupId>
                <artifactId>jdbc-consumer</artifactId>
                <version>${java-functions.version}</version>
            </dependency>
        </dependencies>
    </configuration>
</plugin>

完成上述更改后,你可以从仓库根生成如下的绑定器应用。spring-doc.cadn.net.cn

./mvnw clean install -pl :jdbc-sink

这会生成基于粘合剂的应用应用程序文件夹JDBC汇文件夹。 为了打造你感兴趣的活页夹风格的应用,你需要做以下步骤。spring-doc.cadn.net.cn

cd applications/sink/jdbc-sink
cd apps/jdbc-sink-kafka # (or Rabbit if you are interested in that)
./mvnw clean package
cd target

在那里你会找到基于活页夹的超级罐,里面装有你的修改。spring-doc.cadn.net.cn

3.2. 更新现有依赖或在应用中添加新资源

当应用程序需要添加新的依赖时,像上述那样修改插件是可行的。 然而,当我们需要更新任何现有依赖时,在生成的应用程序中进行maven修改会更容易。 例如,如果我们需要更新Spring Cloud Stream新版本的绑定器依赖,那么这些版本就必须在生成的应用中更新。spring-doc.cadn.net.cn

以下是步骤(同样,我们使用JDBC-sink-kafka举个例子)。spring-doc.cadn.net.cn

./mvnw clean install -pl :jdbc-sink
cd applications/sink/jdbc-sink/apps/jdbc-sink-kafka

打开生成的应用程序pom.xml并更新依赖关系。 如果有包含我们期望增强功能的 Spring Cloud Stream 新版本,那么更新 BOM 本身会更容易。 找到BOM申报的位置pom.xml并更新版本。spring-doc.cadn.net.cn

例如,如果我们必须将Spring Cloud Stream更新为3.2.4-快照该版本必须在BOM声明中具体说明如下:spring-doc.cadn.net.cn

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-dependencies</artifactId>
            <version>4.0.3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

我们也可以直接更新任何单个依赖,但更倾向于使用上述方式依赖管理如果有物料清单可用,就接近。 这是因为在使用物料清单时,Maven会正确使用并对齐任何传递依赖。spring-doc.cadn.net.cn

如果需要进一步修改应用,这种修改生成应用的方法仍然是推荐的。spring-doc.cadn.net.cn

例如,如果你想在应用的类路径中添加安全证书文件,比如密钥存储或信任存储,那么先生成应用程序,然后将这些资源添加到类路径中。spring-doc.cadn.net.cn

确保你在生成的范围内JDBC-sink-kafka文件夹,然后做以下作:spring-doc.cadn.net.cn

首先,将资源添加到类路径中,将其置于src/主/资源.spring-doc.cadn.net.cn

然后重建应用程序。spring-doc.cadn.net.cn

./mvnw clean package
cd target

这里你可以找到修改后的应用程序jar文件。spring-doc.cadn.net.cn

4. 为其他活页夹生成即兴应用

默认情况下,我们只提供 Apache Kafka 和 RabbitMQ 绑定器的开箱即用应用。 还有其他活页夹实现,我们可以生成这些开箱即用的应用。 例如,如果想为 Kinesis 活页夹Solace 活页夹等生成这些应用,可以通过以下说明实现。spring-doc.cadn.net.cn

第一步,克隆流应用仓库。spring-doc.cadn.net.cn

cd applications/stream-applications-core

我们需要编辑这个模块的pom.xml。 找到以下配置,里面定义了 Maven 插件的 Kafka 和 RabbitMQ 绑定器。spring-doc.cadn.net.cn

<kafka>
    <maven>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-stream-binder-kafka</artifactId>
            </dependency>
        </dependencies>
    </maven>
</kafka>
<rabbit>
    <maven>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
            </dependency>
        </dependencies>
    </maven>
</rabbit>

添加你想生成新应用的文件夹。 例如,如果我们想为 Kinesis 绑定器生成应用程序,请按以下方式修改。spring-doc.cadn.net.cn

<binders>
    <kafka>
        <maven>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-stream-binder-kafka</artifactId>
                </dependency>
            </dependencies>
        </maven>
    </kafka>
    <rabbit>
        <maven>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
                </dependency>
            </dependencies>
        </maven>
    </rabbit>
    <kinesis>
        <maven>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-stream-binder-kinesis</artifactId>
                    <version>2.0.3.RELEASE</version>
                </dependency>
            </dependencies>
        </maven>
    </kinesis>
</binders>

注意,我们这里需要明确使用 Kinesis 绑定器版本,而 Kafka 和 RabbitMQ 都不需要它们。 这是因为这些版本来自依赖管理,而 Kinesis 绑定器则无法通过此类机制获得。 因此,我们需要明确使用活页夹版本。 如果我们有一个定义版本的BOM可以替代,只要确保在Maven插件的正确BOM部分声明了它。spring-doc.cadn.net.cn

如果你生成应用的绑定器依赖的是不同版本的 Spring Cloud Stream,确保它在 maven 属性中已更新。spring-doc.cadn.net.cn

现在,我们可以构建:./mvnw 干净安装 - DskipTests.spring-doc.cadn.net.cn

如果我们进入应用文件夹查看生成的应用,应该能看到新的绑定器变体。 例如,如果我们按照上面添加 Kinesis 绑定器的配置,那么生成的应用中应该会看到基于 Kinesis 绑定器的应用。 我们来取时间源举个例子。spring-doc.cadn.net.cn

cd applications/source/time-souce/apps

这里,我们应该看到三个不同的基于活塞的应用项目——时间-来源-卡夫卡,时间-源-兔子时间-源-动Mechanics. 同样,所有开箱即用的应用项目也应该如此。spring-doc.cadn.net.cn

请记住,这些生成的应用程序还需要单独构建。 为此,进入生成的应用程序文件夹,然后启动 Maven 构建。spring-doc.cadn.net.cn