来自不同主题的一个消费者具有相同的密钥

问题描述 投票:0回答:1

我有一个用例,其中有 2 个不同的主题,来自 2 个不同的应用程序/生产者,其中的事件通过键(例如用户 ID)相关。 为了顺序处理并避免竞争条件,我想在同一个消费者中处理与特定键(例如特定用户)相关的所有数据。

对此有哪些建议的解决方案? 根据 https://www.reddit.com/r/apachekafka/comments/16lzlih/in_apache_kafka_if_you_have_2_partitions_and_2/ 我不能假设消费者将被分配相关分区,即使整个主题的分区数量相同。 我应该创建第三个主题来聚合它们吗?我假设有一些内置的 Kafka 连接可以做到这一点?

如果有必要的话,我正在将 Kafka 与 Spring 结合使用。

apache-kafka spring-kafka
1个回答
0
投票

对。无法保证哪条记录将首先到达以及来自哪个消费者实例。我不确定第三个主题在这里有何帮助,但这项任务确实可以通过 Kafka Streams 来实现:https://developer.confluence.io/courses/kafka-streams/hands-on-aggregations/

或者,如果您对 Spring 解决方案更感兴趣,请查看 Spring Integration 中的聚合器实现:https://docs.spring.io/spring-integration/reference/aggregator.html

© www.soinside.com 2019 - 2024. All rights reserved.