卡夫卡消费者可以成为同一个卡夫卡组的生产者吗

Can a Kafka consumer be a producer on the same kafka group

我想使用 Kafka 作为任务调度器。这是一个例子:

假设我希望我的服务定期从一组给定的帐户下载最新的推文。

生产者:当要提取的新推特句柄添加到服务时,生产者将此消息推送到卡夫卡:

{ twitter_user: "new_user_handle", start_at: "current_timestamp"}

消费者:每一个都处于无限循环中:

1. receive a task from Kafka: say {"elon_musk", "2021-11-29-22:55"}
2. extract all the tweets of user @elon_musk" since 2021-11-29-22:55.
3. produce a new message {"elon_musk", "<timestamp-of-latest-tweet-just-extracted>"}
4. Commit

当然,理想情况下,第 3 步和第 4 步应该在单个“事务”中执行。这样下一个消费者工作人员将在这个消费者完成的地方接手。

Kafka 可以吗?

消费者和生产者是独立的进程。没有什么可以阻止您生成消费者将轮询的数据。

如果您使用现有主题中的数据,然后 filtering/extracting 数据填充新主题,那么这就是 Kafka Streams 和 KSQL 的用例。