spring-cloud-stream - Spring Cloud Stream 分支流未按预期工作
问题描述
下面是分支代码,它只流向一个主题(第一个主题)。据我了解,它应该流向所有三个主题?
无论如何,我可以使用分支流式传输到三个主题?
@Bean
public Function<KStream<String, Usesr>, KStream<String, User>[]> testprocess() {
Predicate<String, User> stream1 = (k, v) -> v != null;
Predicate<String, User> stream2 = (k, v) -> v != null;
Predicate<String, User> stream3 = (k, v) -> v != null;
return input -> input.map(
(key, user) -> new KeyValue<String, User>(user.getId(), user))
.branch(stream1, stream2, stream3);
处理器的配置
testprocess-in-0:
destination: input.users
testprocess-out-0:
destination: users.test.out.0
testprocess-out-1:
destination: users.test.out.1
testprocess-out-2:
destination: users.test.out.2
解决方案
通过查看您的谓词,似乎第一个谓词总是获胜,而其他谓词则没有机会。在 Kafka Streams 分支中,第一个评估为 true 的谓词成功,相应的主题接收数据。您需要更改谓词中的逻辑,以便正确映射正确的主题。这是一个例子。
推荐阅读
- netlogo - 如何找出 Y 发生的概率取决于 Netlogo 中的 X1 和 X2?Y , X1 和 X2 是海龟变量
- php - 为什么我不能在此查询中按名称排序?
- java - Java中包命名约定和项目管理的疑惑
- php - 我需要帮助设置新的日志文件
- r - 使用 .pull-left[] 在两列中的 Rmarkdown 不起作用两次
- javascript - 使用路径拆箱属性值
- linux - 显示路径中目录的详细信息 - bash 脚本分配
- elasticsearch - 在运行查询之前初始化 Elasticsearch SearchResponse 对象
- openlayers - 带有 OSM 视网膜图块的 Openlayers:文本太小
- sql - 查询应返回 n 个结果时返回 0 行