Pav*_*dez 1 apache-kafka spring-kafka
我对卡夫卡有点陌生,正在阅读文档。Kafka 办公网站有一个关于 KStream 的示例。应用程序绑定到某个主题,消息一到达就会立即进行处理。结果将发布回主题或数据库。
Spring Kafka 注释 @KafkaListener 具有相同的功能。例如,我尝试了KafaListner 应用程序。同样在这里,我们收听一个主题并在发布内容时对其进行处理。
所以我很想知道 1. 这两个有什么不同?2. 在什么场景下选择哪一个?
请注意,这是一个非常有限的解释。请参阅文档。
回答你的问题1“这两个有什么不同?” - KafkaListener 和 KStream 都消费来自 Kafka 主题的消息。然而,它们维持状态的方式有所不同。KafkaListener 不维护状态。它会在消息到来时消耗消息。KStream 将主题作为连续的消息流读取。
假设一个主题发送行,并且我们维护每个单词的数量。所以在我们发送主题这两行之后,
你好,早上好,你好,谢谢
我们将进行字数统计 - 你好 2、好 1、早上 1 和感谢 1。
KakfaListener 可用于手动记录字数。开发人员可以将单词存储在静态哈希图中并保留计数。KStream 会自然地做到这一点,因为它将主题作为流读取 -
它被设计为对无限的、无限制的数据流进行操作
KStream 示例对此进行了详细解释。
要回答您的问题2“在哪种情况下更喜欢哪个?”,如果您需要在不维护状态的情况下消费消息,请使用KafkaListener。就像管道一样,将信息从源获取到接收器。如果您的消息彼此相关,请使用 KStream - 例如查找所有消息中特定单词的总数(大致类似于 SQL 中的 GROUP BY)。