kafka过滤消息与墓碑

kafka filtering messages vs tombstones

我正在研究 Kafka 中的消息过滤,我看到了一些我觉得很有趣的例子,但我有一个问题,这不是我遇到的代码错误,只是为了确认我的想法理解。

如果我正确阅读了代码,例如消息的过滤器只会使记录为空

https://github.com/apache/kafka/blob/trunk/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/Filter.java#L39

记录为空不等于说内容是墓碑记录? 进一步的过程如何能够理解这是一个有效的逻辑删除记录还是一个被过滤的简单消息(我可以理解消息密钥会有所不同)

主要针对对逻辑删除感兴趣的系统我只是想知道过滤是否不会产生不良后果,但也许我对“null”与逻辑删除相同的理解是完全错误的。

我理解(或者我认为我理解)record.value() == nullrecord == null 之间存在差异,但这不会在转换链的其余部分导致大量空指针异常?

感谢任何反馈。

逻辑删除记录有一个 non-null 键和空值 属性。您无法获取空连接记录实例的密钥。

转换链将忽略后续转换中的空记录,因此它们比根据特定属性过滤更容易被“丢弃”