Yeah the semantics are slightly different. For a KTable, a null value just 
means that the record is a tombstone, and will be anyways ignored by subsequent 
processing:
http://docs.confluent.io/current/streams/javadocs/org/apache/kafka/streams/kstream/KTable.html#filter-org.apache.kafka.streams.kstream.Predicate-
 
<http://docs.confluent.io/current/streams/javadocs/org/apache/kafka/streams/kstream/KTable.html#filter-org.apache.kafka.streams.kstream.Predicate->

Eno


> On 15 Jun 2017, at 13:51, Paolo Patierno <ppatie...@live.com> wrote:
> 
> Hi all,
> 
> 
> I was asking why the different behaviour of filter() operation on a KStream 
> and KTable.
> 
> On KStream, if the predicate is false, the message isn't passed to the next 
> node (so for example if a sinknode, it doesn't arrive to the destination 
> topic).
> 
> On KTable, if the predicate is true, a message with null value is passed.
> 
> With filter operation I want to avoid to receive messages for which the 
> predicate is not valid.
> 
> Why this difference ?
> 
> 
> Thanks,
> 
> Paolo
> 
> 
> Paolo Patierno
> Senior Software Engineer (IoT) @ Red Hat
> Microsoft MVP on Windows Embedded & IoT
> Microsoft Azure Advisor
> 
> Twitter : @ppatierno<http://twitter.com/ppatierno>
> Linkedin : paolopatierno<http://it.linkedin.com/in/paolopatierno>
> Blog : DevExperience<http://paolopatierno.wordpress.com/>

Reply via email to