Hi Guys,

I am implementing a stream processor where I aggregate a stream of events
by their keys into a KTable tableA and then I am “enriching” another
streamB by the values of tableA.

So essentially I have this:

streamC = streamB
  .selectKey(..)
  .leftJoin(tableA);

This works great however in add to also need to produce a stream of records
from streamB which are the inverse, in other words records which failed the
join (key was null for them). This is similar to what the “branch” API does
for filtering on multiple predicates. So when the leftJoin fails I need to
do something else with the result - potentially another enrichment by join.

Is this something that can be accomplished by Kafka Streams DSL directly or
do I need to implement my processor which does this branching?

In this case - I would have to query the state store directly which should
not be a problem. However - would that not be a problem in terms of
partitioning of the state store (for tableA) and the selectKey operation on
streamB. In other words - if two streams use the same partitioning on the
same key, their partitions should be visible to the same instances, correct?

Using Kafka Streams 0.10.1.0 here.

Regards,
-Ivan

Reply via email to