У меня есть функция потока 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;
}