David Turanski

David Turanski

校友
博文David Turanski

测试 Spring Cloud Stream 应用程序 - 第 1 部分

工程 | 2020 年 12 月 15 日 | ...

本文是探讨基于 Java 函数重新设计的 Spring Cloud Stream 应用程序的系列博客文章的一部分。本集分为两部分,探讨了用于实现流应用程序的函数的测试策略。我们将特别关注与外部资源集成的函数,这会带来额外的测试挑战。大多数预打包的源和接收器应用程序都属于这种情况。为了说明这一点,我们将详细介绍一个示例 couchbase-sink 应用程序。在第 1 部分中,我们将重点介绍接收器所基于的核心函数……

测试 Spring Cloud Stream 应用程序 - 第 2 部分

工程 | 2020 年 12 月 15 日 | ...

这是测试流应用程序的第 2 部分。在第 1 部分中,我们实现了并测试了示例 couchbase-sink 应用程序所需的核心功能。函数级别的测试涵盖了预期的成功和错误场景,并依赖 Testcontainers 来配置 Couchbase 集群。本文假设您已阅读第 1 部分,并从第 1 部分结束的地方继续。

Couchbase 接收器

在第 1 部分中,我们验证了为将数据插入 Couchbase 而编写的函数按预期工作。我们现在可以使用该函数(作为 java.util.Consumer 公开)来实现一个接收器,用于构建数据管道……

案例研究:使用 Spring Cloud Data Flow 远程文件摄取

工程 | 2020 年 9 月 29 日 | ...

本文是探讨基于 Java 函数重新设计的 Spring Cloud Stream 应用程序的系列博客文章的一部分。在本章中,我们将探讨如何使用 Spring Cloud Stream 应用程序Spring Cloud Data Flow 来实现一个非常常见的 ETL 用例:从远程服务摄取文件。具体来说,我们将研究如何从 S3、SFTP 和 FTP 摄取文件。

到目前为止,博客系列中包含的内容如下:

案例研究:HTTP 请求函数和处理器

工程 | 2020 年 8 月 17 日 | ...

简介

我们以介绍基于 Java 函数的新流应用程序函数组合来开始本系列。之前的文章提供了一个构建简单流应用程序并在 Spring Cloud Data Flow 中运行的教程。今天,我们将探讨 HTTP 请求函数,并提供如何使用它的示例。

如果您错过了,本系列之前的文章有:

案例研究:使用 HTTP 源和 JDBC 接收器构建和运行流应用程序

工程 | 2020年8月10日 | ...

简介

到目前为止,在本系列中,我们已经介绍了基于 Java 函数的新流应用程序以及函数组合。我们还提供了如何从供应商构建源以及从消费者构建接收器的详细示例。在这里,我们继续接下来的几个案例研究中的第一个。每个案例研究都演示了如何在各种场景中使用一个或多个可用的预打包 Spring Boot 流应用程序来构建数据流管道。

今天,我们将展示两个最常用的应用程序,HTTP 源JDBC 接收器。我们将使用它们来构建一个简单的服务,该服务接受 HTTP POST 请求并将内容保存到数据库表中。我们首先将它们作为独立的 Spring Cloud Stream 应用程序运行,然后展示如何使用 Spring Cloud Data Flow 协调相同的管道……

介绍 Spring Cloud Stream 应用程序的 Java 函数 - 第 1 部分

工程 | 2020 年 7 月 20 日 | ...

介绍 Spring Cloud Stream 应用程序的 Java 函数 - 第 1 部分

上周我们发布了介绍 Spring Cloud Stream 应用程序的 Java 函数 - 第 0 部分
以宣布 Spring Cloud Stream 应用程序 2020.0.0-M2 的发布。
在这里,我们探讨了函数组合,这是第 0 部分中介绍的面向函数架构所启用的更强大功能之一。如果您还没有机会阅读第 0 部分,现在正是时候!

函数组合

函数组合在数学和计算机科学中拥有坚实的理论基础。
实际上,它是一种……

介绍 Spring Cloud Stream 应用程序的 Java 函数 - 第 0 部分

发布 | 2020 年 7 月 13 日 | ...

我们很高兴地宣布 Spring Cloud Stream 应用程序 2020.0.0-M2 发布。此版本是对旧版 Spring Cloud Stream App Starters 的全面改版。从这个版本开始,我们放弃了以主题为导向的版本列车名称(按字母顺序排列的著名科学家),转而采用基于日历的版本控制。当前的 GA 版本称为 Einstein,我们很高兴推出 2020.0.0-M2。我们也在摆脱应用程序启动器。在重组、重新打包并(在某些情况下)重写了底层代码之后,我们现在有了一个新的 Git 仓库:spring-cloud/stream…

Spring Framework 4 中的 Groovy Bean 配置

工程 | 2014 年 3 月 3 日 | ...

本文旨在向 Java 开发人员介绍 Groovy Bean Builder,作为 Java @Configuration 和 XML 配置的强大替代或补充。Spring Framework 4.0 版本包含 Grails Bean Builder 移植到核心 Spring Framework 的内容,为配置 Spring 应用程序提供了 Groovy DSL。Groovy 和 Grails 开发人员无疑熟悉这种配置 Spring 应用程序的方式,我预计其他人已经开始想“这有多酷?”

如果您不是 Groovy 专家,请不要担心。就像许多 Java 程序员使用另一个流行的 Groovy DSL Gradle 来构建应用程序一样,您只需要了解一些基本语法即可开始。示例代码可在 github 上找到……

Spring Data GemFire 1.3.0 发布

工程 | 2013 年 3 月 14 日 | ...

我很高兴地宣布 Spring Data GemFire 1.3.0 的 GA 版本发布。除了许多小的错误修复和增强之外,此版本还包含一些值得注意的新功能,使使用 GemFire 编写 Java 应用程序变得更加容易

函数注解支持

GemFire 通过提供远程函数执行框架,实现了“将代码带到数据”的能力。秉承 Spring 的核心价值,Spring Data GemFire 隐藏了注册和执行远程函数所需的样板代码,让您可以编写 POJO 并专注于应用程序逻辑。有关详细信息,请参阅 Spring Data GemFire 参考指南中的函数执行注解支持章节。

简化与 GemFire 数据源的连接

GemFire 提供了许多选项来调整其连接池的性能,以及配置本地数据如何管理和同步。Spring Data GemFire 命名空间支持所有这些选项,但是许多应用程序是客户端,只需对 GemFire 数据网格进行读/写访问。对于此类应用程序,现在可以作为客户端连接到 GemFire,而无需显式配置池或客户端区域

 <gfe-data:datasource>
        <gfe-data:locator host="${host}" port="${port}"/>
 </gfe-data:datasource>

上述配置将创建一个客户端缓存、池以及服务器上所有可用区域的代理客户端区域,并提供合理的默认值,并将它们注册为 Spring bean。

JSON 支持

GemFire 7.0 提供了存储 JSON 并具有完整查询支持的能力。通常,这需要应用程序使用 JSONFormatter 将 GemFire 的内部格式转换为 JSON 字符串,反之亦然。Spring Data GemFire 现在提供了一个选项,可以对选定的区域自动执行此转换,以及使用 Jackson 的 ObjectMapper 从 Object 到 JSON 的单向转换。此功能使用 Spring AOP 拦截 Region 和 GemFireTemplate 上的适当操作。有关详细信息,请参阅 Spring Data GemFire 参考指南

Spring Integration 的 Groovy DSL

工程 | 2012 年 11 月 6 日 | ...

Spring Integration 使用 Spring 编程模型实现企业集成模式,以在基于 Spring 的应用程序中启用消息传递。Spring Integration 还通过支持 jms、http、amqp、tcp、ftp(s)、smtp 等的声明式适配器提供与外部系统的集成。目前,消息流的配置主要通过 Spring XML 完成,Spring Integration 支持多个命名空间以使其尽可能简洁。今年早些时候,SpringSource 发布了 Spring Integration 的 Scala DSL。现在,我们很高兴地宣布第一个里程碑版本……

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有