抢占先机
VMware 提供培训和认证,助您加速进步。
了解更多经过漫长而激动人心的旅程,我们很高兴地宣布 Spring Cloud Stream Elmhurst 发布系列 - Elmhurst.RELEASE/2.0.0.RELEASE 正式发布。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-dependencies</artifactId>
<version>Elmhurst.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Spring Cloud Stream Elmhurst (2.0.0.RELEASE) 可在 Maven Central 和 Spring Repo 中使用。其发布说明包含有关与 Spring Boot、Spring Cloud、Spring AMQP 和 Spring for Apache Kafka 的版本兼容性的相关信息。
Spring Cloud Stream 2.0 对内容类型协商功能进行了全面改进,以解决性能、灵活性,最重要的是,一致性问题。最近发布的博客文章触及了已完成工作、预期内容以及它如何帮助您的一些关键点。更多信息可在参考指南的内容类型协商一节中找到。
如前一节所述,在简化内容类型协商和消息转换方面投入了大量工作。这项工作的结果是,我们现在支持注册用户定义的消息转换器(通过 Spring 的标准 org.springframework.messaging.converter.MessageConverters
),以应对提供的消息转换功能不足的情况。您可以使用 @StreamMessageConverter
注册自定义消息转换器,如下所示
@Bean
@StreamMessageConverter
public FooBarMessageConverter fooBarMessageConverter() {
return new FooBarMessageConverter(MimeType.valueOf("foo/bar"));
}
public static class FooBarMessageConverter extends AbstractMessageConverter {
. . .
}
更多信息可在参考指南的用户定义的消息转换器一节中找到。
轮询消费者功能让您可以控制消息消费速率,Gary Russell 最近发布的博客提供了更多信息,可归纳为两个简单的步骤
@Input
PollableMessageSource inputSource();
@Autowire
PollableMessageSource inputSource;
. . .
inputSource.poll(System.out::println);
更多信息可在参考指南的使用轮询消费者一节中找到。
为了简化占用空间并提供更大的灵活性来选择 Web 框架(命令式或 webflux),我们将 Spring Boot Actuator 和 Web 都设为可选依赖项,默认不包含它们。但是,如果需要,您可以通过包含以下依赖项元素将其添加为应用程序依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
现在,您可以使用新的 actuator 端点来可视化和控制绑定。
设置 management.endpoints.web.exposure.include=bindings
Boot 属性,并通过在项目中包含其各自的 starter 作为依赖项(如Actuator 和 Web 现在是可选的中所述)来启用其中一个 web 框架和 actuator
启动您的应用程序并访问以下 URL 以可视化当前绑定:http://localhost:8080/actuator/bindings
通过该 URL,您可以接收到类似以下的输出
[
{
name: "myDestination",
group: "myGroup",
pausable: false,
state: "running",
extendedInfo: {
bindingDestination: "RabbitConsumerDestination{queue=Queue [name=myDestination.myGroup, durable=true, . . .}",
ExtendedConsumerProperties: {
concurrency: 1,
instanceCount: 1,
maxAttempts: 3,
backOffInitialInterval: 1000,
backOffMaxInterval: 10000,
backOffMultiplier: 2,
extension: {
exchangeType: "topic",
declareExchange: true,
. . .
您还可以可视化单个绑定并控制它们的生命周期(例如停止、启动、暂停和恢复)。更多详细信息可在用户指南的绑定可视化和控制一节中找到。
自 Boot 2.0 以来,指标支持一直基于 Micrometer。Micrometer 捕获应用程序指标,而 Spring Cloud Stream 则支持将这些应用程序指标发布到预定义的目标(例如 Rabbit 交换机或 Kafka 主题)。通过设置 spring.cloud.stream.bindings.applicationMetrics.destination=myMetricDestination
属性,您就请求将指标消息发布到 myMetricDestination
。发布的消息采用 JSON 格式,看起来与以下内容类似
{
"name": "application",
"createdTime": "2018-03-23T14:48:12.700Z",
"properties": {
},
"metrics": [
{
"id": {
"name": "spring.integration.send",
"tags": [
. . .
{
"key": "name",
"value": "input"
},
. . .
{
"key": "type",
"value": "channel"
}
],
"type": "TIMER",
"description": "Send processing time",
"baseUnit": "milliseconds"
},
"timestamp": "2018-03-23T14:48:12.697Z",
"sum": 130.340546,
"count": 6,
"mean": 21.72342433333333,
"upper": 116.176299,
"total": 130.340546
}
]
}
Spring Cloud Dataflow 及其 UI 是这些信息的使用者之一,它显示消息速率以及其他指标数据。更多详细信息可在参考指南的指标发射器一节中找到。
我们自己的 Soby Chacko 在增强使用 Apache Kafka Streams 构建流应用程序的支持方面做了出色的工作。一些值得一提的核心功能包括
KStream
和 KTable
)作为可绑定组件正当我们完成这项新功能时,我们孜孜不倦的同事兼朋友 Josh Long 整理了一个快速演示/教程,展示了使用 Kafka Streams 和 Spring Cloud Stream 构建流应用程序的一些技巧和窍门。
这本新的快速入门指南专门设计为不超过 5 分钟完成,几乎不需要 Spring Cloud Stream 的先验知识或经验。它还展示了与 Spring Cloud Stream 2.0 和 Spring Boot 2.0 相关的 Spring Initializr 更新。
一旦熟悉了核心概念,请随时探索并使用我们广泛且不断增长的示例库,这些示例展示了传统和响应式风格的流应用程序。
如果您想了解 Spring Cloud Stream 作为 Spring Cloud Dataflow 中定向数据管道构建块的作用,我们强烈推荐我们自己的 Christian Tzolov 的文章 Real-time Object-Detection With Spring Cloud Stream。
我们的社区不断壮大。无论是参与公共论坛讨论(例如 Stack Overflow、Gitter 等)还是在 GitHub 贡献代码,您的参与都无比宝贵,我们非常感激。因此,我们想借此机会感谢以下 GitHub 用户及其通过 GitHub pull request 形式做出的贡献:@jmax01
、@JacobASeverson
、@davidkalosi
、@oatesp
、@aldex32
、@bewithvk
、@rzukow
、@iNikem
、@Delmonte3161
、@hekonsek
等等。
我们还要特别表彰由我们自己的 Artem Bilan 领导的社区工作,他们为支持 AWS Kinesis binder 做出了贡献。
如果您想提出问题或做出贡献,请随时通过 GitHub 项目网站联系我们