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/>