Hi,
The javadoc of this method states:
If the return value of ValueTransformer#transform()
<https://kafka.apache.org/23/javadoc/org/apache/kafka/streams/kstream/ValueTransformer.html#transform-V->
is null, no records are emitted.
However when I check the underlying processor for the same:
KStreamTransformValuesProcessor#process
It seems to simply forward to downstream with value:
public void process(final K key, final V value) {
context.forward(key, valueTransformer.transform(key, value));
}
On the other hand if I look at the processor for
KStream#transform
KStreamFlatTransformProcessor#process
It has proper code to check for null.
public void process(final KIn key, final VIn value) {
final Iterable<KeyValue<KOut, VOut>> pairs =
transformer.transform(key, value);
if (pairs != null) {
for (final KeyValue<KOut, VOut> pair : pairs) {
context().forward(pair.key, pair.value);
}
}
}
So I was just wondering if say we want to have say dedup operation, do
we call stream#transform or stream#transformValue would also work if
we return null from the transformer.
Thanks
Sachin