我是Spring Cloud Stream的新手。我的用例是从文件源中读取并为文件中的每一行发布消息(到Kafka)。我尝试使用文件源应用启动器(https://github.com/spring-cloud-stream-app-starters/file/tree/master/spring-cloud-starter-stream-source-file),并且能够发布消息。
但是,现在我需要在发布之前调整邮件的正文。应用启动器会生成通用消息,我需要在发布之前修改结构。我曾尝试在SO上搜索,但没有找到任何合适的示例。有人可以建议如何实现这一目标吗?
非常感谢。
答案 0 :(得分:1)
实际上,这是一个新功能,我们将很快写博客,但我将在这里尝试解释。我相信您想扩展现有的应用程序,因此在这种情况下,您只想创建一个扩展 source-file 的新应用程序,然后使用新添加的Spring Cloud Function支持将您的转换器简单地组合到现有应用。
首先,您需要确保使用的是最新的Spring Cloud Stream,该流应该是Fishtown.RC1(2.1.0.RC1)。
另外,我们还有一个example (which is going to be used for the blog),您可能会觉得有用。它实际上可以完全满足您的需求。仅扩展而不是扩展file-source
而是扩展http-source
,这意味着您只需要将pom中的依赖项从spring-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();
}
}
无论如何,我知道上面的解释可能会遗漏一些内容,但请试一试,看看您是否有后续问题。我将确保在准备好博客后将其发布。
答案 1 :(得分:0)