【发布时间】:2017-10-21 22:54:42
【问题描述】:
假设我有 n 个生产者将每个时间戳 t 的数据发送到 Kafka。消费者获取时间戳t数据的条件是,时间戳t的数据是从所有生产者那里收到的。
卡夫卡让消费者做这样的检查吗?或者 Kafka 有针对此类问题的策略吗?
【问题讨论】:
-
消费者知道n的值吗?
假设我有 n 个生产者将每个时间戳 t 的数据发送到 Kafka。消费者获取时间戳t数据的条件是,时间戳t的数据是从所有生产者那里收到的。
卡夫卡让消费者做这样的检查吗?或者 Kafka 有针对此类问题的策略吗?
【问题讨论】:
Kafka 代理本身无法进行过滤,消费者驱动程序也不会进行任何过滤。 Kafka 有线协议在此处描述了获取请求: https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol#AGuideToTheKafkaProtocol-FetchRequest
基本上,每个获取请求都将包含一组主题、分区、偏移量,并且没有基于内容的过滤。 Kafka 是一个消息队列,它本身不会查看消息。无论您需要什么过滤,都应该在处理逻辑中。如果某些消息不符合过滤条件,则跳过它(当然偏移量必须自动提交或通过显式调用所有消息来提交)
【讨论】: