首页 > 解决方案 > 从 spring-cloud-stream app starter 修改消息正文

问题描述

我是 Spring Cloud Stream 的新手。我的用例是从文件源中读取并为文件中的每一行发布消息(到 Kafka)。我尝试使用文件源应用程序启动器(https://github.com/spring-cloud-stream-app-starters/file/tree/master/spring-cloud-starter-stream-source-file)并且已经能够发布消息。

但是,我现在需要在发布之前调整消息的正文。应用程序启动器生成通用消息,我需要在发布之前修改结构。我曾尝试在 SO 上进行搜索,但没有找到任何合适的示例。谁能建议如何实现这一目标?

非常感谢。

标签: spring-cloud-stream

解决方案


实际上,这是我们很快将在博客中发布的新功能,但我会在这里尝试解释一下。我相信您想扩展现有应用程序,因此在这种情况下,您只需创建一个扩展源文件的新应用程序,然后使用新添加的 Spring Cloud Function 支持将您的转换器简单地组合到现有应用程序中。首先,您需要确保您使用的是最新的 Spring Cloud Stream,它应该是 Fishtown.RC1 (2.1.0.RC1)。此外,我们有一个示例(将用于博客),您可能会发现它很有用。它实际上完全符合您的要求;只是扩展file-source它而不是扩展,http-source这意味着您只需将 pom 中的依赖项从 tospring-cloud-starter-stream-source-http交换spring-cloud-starter-stream-source-file然后只需定义一个 Function 类型的 Bean,您可以在其中定义转换并在启动期间提供一个属性,--spring.cloud.stream.function.definition=uppercase其中uppercase是您要在文件源尾部编写的函数的名称。

@SpringBootApplication
public class MyAppExtender {

    public static void main(String[] args) {
        SpringApplication.run(MyAppExtender.class, "--spring.cloud.stream.function.definition=uppercase");
    }

    @Bean
    public Function<String, String> uppercase() {
        return x -> x.toUpperCase();
    } 
}

无论如何,我知道上面的解释可能缺少一些部分,但是试一试,看看你是否有后续问题。我会确保在博客准备好后发布。


推荐阅读