卡夫卡表中的汇总记录超时?

时间:2018-08-01 10:49:33

标签: apache-kafka apache-kafka-streams

我使用Kafka处理消息。消息可以分为几个部分(这是一个复合消息)。因此,在流中,例如,我可以有一个复合消息,该消息分为三个部分。换句话说,这将是卡夫卡流中的三个记录,但这是一条重要信息。我想使用Kafka表在一条Kafka记录中合并部分复合消息。合并后,将在数据库(Postgres)中插入一条消息。每个零件都有零件的数目和总数。例如,如果流中有一条消息的三个部分(三个卡夫卡记录),则每个部分的字段总数为3。

我的理解是,在积极的情况下任务很简单:聚集表中的零件,从表中创建流,并过滤具有相等的聚集零件大小和零件总数的记录,在一条合并的消息中过滤出地图并将其插入数据库中( Postgres)。

但是负面的情况也是可能的。在极少数情况下,根本无法在Kafka中插入其中一部分(或者超时后,它会在很晚之后插入)。因此,例如,在流中,将仅出现一个复合消息中三个的两个部分。在这种情况下,我必须在数据库(Postgres)中插入未完全构造的消息(它将仅包括两个部分,而不是三个部分)。如何在Kafka中实施这种负面方案?

1 个答案:

答案 0 :(得分:0)

我建议您检查标点符号:https://docs.confluent.io/current/streams/developer-guide/processor-api.html#defining-a-stream-processor

还要注意,您可以混合搭配Processor API和DSL:https://docs.confluent.io/current/streams/developer-guide/dsl-api.html#applying-processors-and-transformers-processor-api-integration

如果为KTable聚合提供商店名称,则可以将商店连接到注册标点符号的自定义处理器。总体而言,最好将处理器API用于整个应用程序而不是DSL。