【发布时间】:2019-04-29 11:39:40
【问题描述】:
我有一个流函数KStream<K, V>[] branch(final Predicate<? super K, ? super V>... predicates)。我想动态创建一个谓词列表。这可能吗?
KStream<Long, AccountMigrationEvent>[] branches = stream
.map((key, event) -> enrich(key, event))
.branch(getStrategies());
[...]
private List<org.apache.kafka.streams.kstream.Predicate<Long, AccountMigrationEvent>> getStrategies() {
ArrayList<Predicate<Long, AccountMigrationEvent>> predicates = new ArrayList<>();
for (MigrationStrategy strategy : strategies) {
predicates.add(new org.apache.kafka.streams.kstream.Predicate<Long, AccountMigrationEvent>() {
@Override
public boolean test(Long key, AccountMigrationEvent value) {
return strategy.match(value);
}
});
}
return predicates;
}
【问题讨论】:
-
您的方法需要一个数组 (
...),而不是一个列表。为什么你在某些地方使用Predicate而在其他地方使用org.apache...Predicate?
标签: java java-8 java-stream apache-kafka-streams