Каждая запись будет отправлена каждому предикату один раз - это концептуально широковещательная рассылка всем фильтрам, но записи не будут физически реплицированы, поэтому нет никаких накладных расходов памяти.
я есть одна основная тема и несколько предикатов, с каждым из которых связана выходная тема. Я хочу отправить каждую запись во ВСЕ темы, чей предикат разрешается в true. Я использую Luwak для проверки того, какие предикаты удовлетворяют записи (для использования этой библиотеки вы оцениваете документ со списком предикатов, и он сообщает вам, какие из них совпадают - то есть я вызываю его только один раз, чтобы получить список удовлетворенных предикатов).
Я пытаюсь использовать Kafka Streams для этого, но, похоже, нет подходящего метода для KStream (ветка KStream # направляет запись только в одну тему).
Один из возможных подходов заключается в следующем:
Stream from master
Map the values into a format with the original content and the list of matching predicates
Stream to an intermediate with-matches topic
For each predicate/output topic
Stream from intermediate with-matches topic
Filter "does list of matches predicates contain predicate ID"
Map the values to just the original content
Stream to corresponding output topic
Такая промежуточная тема кажется "неуклюжей", хотя. Есть лучшие предложения?
Я использую:
Кафка v0.10.1.1Luwak v1.4.0