簡體   English   中英

從Kafka ktable正確刪除記錄

[英]correctly delete record from Kafka ktable

我想從KTable中正確刪除對象。

我有以下流處理數據:

input
.map(this::deserialize)
.filter(((key, event) ->
    Arrays.asList(
        "AssessmentInitialized",
        "AssessmentRenamed",
        "AssessmentDeleted"
    ).contains(event.eventType())))
.map( ... do mapping  ... )
.groupBy((key, event) -> key, Serialized.with(Serdes.String(), domainEventSerde))
.aggregate(
    Assessment::new,
    (key, event, assessment) -> assessment.handleEvent(event),
    Materialized.<String, Assessment, KeyValueStore<Bytes, byte[]>>as(ASSESSMENTS_STORE)
        .withKeySerde(Serdes.String())
        .withValueSerde(assessmentSerde)
);

and assessment.handleEvent(event)在處理AssessmentDeleted事件時返回null Serde是this.assessmentSerde = new JsonSerde<>(Assessment.class, objectMapper); 其中,映射器是默認的com.fasterxml.jackson.databind.ObjectMapper bean。

在此流處理完事件之后,我在Kafka KTable changelog中看到以下值:

{
"topic": "events-consumer-v1-assessments-store-changelog",
"key": "5d6d7a70-c907-460f-ac88-69705f079939",
"value": "ée",
"partition": 0,
"offset": 2
}

它看起來不像我想要的東西。 這樣刪除對象的方法正確嗎? 我期望如果將null作為值推入聚合操作,它將被刪除,但看起來好像有些殘廢,而且我不確定其映射器問題還是刪除方式不正確或KTable行為正確。

在您看來,問題出在檢查工具中。 由於某些原因,它無法正確反序列化null值。 始終最好先使用Kafka工具進行檢查( kafka-console-consumer.shkafka-console-producer.sh )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM