java - Spring 集成 + 向 kafka 发送 2 个事件
问题描述
我有一个消息网关,它在输入通道中接收一个 http Json 请求。
我想将 2 个事件作为同一请求的一部分发送到 kafka,一个事件用于接收,一个事件用于处理。
使用 Spring Integration 实现这一目标的最佳方法是什么?
我就是这样做的,它可以工作,但不确定是否有更好的方法:
@Bean
public IntegrationFlow processMessage() {
return IntegrationFlows
.from("inputChannel")
.routeToRecipients(r -> r.recipient("inputChannel2")
.recipient("inputChannel3"))
.get();
}
@Bean
public IntegrationFlow sendReceived(MessageTransformer messageTransformer) {
return IntegrationFlows
.from("inputChannel2")
.transform(messageTransformer)
.handle( this.kafkaMessageHandler() )
.get();
}
@Bean
public IntegrationFlow sendProcessed(MessageTransformer2 messageTransformer) {
return IntegrationFlows
.from("inputChannel3")
.transform(messageTransformer)
.handle( this.kafkaMessageHandler() )
.get();
}
谢谢。
解决方案
嗯,你做的没问题。实现相同目标的另一种方法是使用 apoublishSubscribeChannel
代替:
https://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl-subflows
您也可以考虑为 Kafka 消息处理程序设置一个配置,并从这两个分发流中为它重用一个通道。
推荐阅读
- php - 如何提供一个文件夹来从 Web 应用程序写入和下载临时文件?
- configuration - traefik.toml 中的后端和前端是什么
- c++ - I get the Assertion failure "file_name != nullptr" but only in release mode
- asp.net-mvc - 在 FireFox 版本 64 上的时刻 DateTime 格式(额外 -)不正确
- css - 如何命名仅包含 @import 语句的 Sass 文件
- mysql - 足球队实体关系图
- sql - 查询小于特定时间的时间
- ffmpeg - FFMPEG 没有记录整个窗口
- python - requests.post is not giving any response in python?
- docker - Windows 上 docker build 命令期间的 CPU 资源