我试图根据条件限制我对某个主题的消耗率。 例如:
如果消息包含:“foo” 我希望每秒消耗不超过 5 条消息(全局 - 意味着即使我的服务器上运行着多个消费者实例)。
如果消息包含:“bar” 我希望每秒消耗不超过 2 条消息(全局 - 意味着即使我的服务器上运行着多个消费者实例)。
等等。
可以使用 KStreams(Kafka Streams)来做到这一点吗?
另一种方法是使用传统的 kafka 消费者来完成此操作,并通过在 Redis 等存储中管理状态来编码速率限制。但如果 Kafka Streams 本身就提供了这种功能,我就可以避免重新发明轮子。
我不认为你可以用 Kafka Streams 来做到这一点。它抽象了太多较低级别的消费者概念。对于您所描述的内容,您需要控制 Kafka Streams 运行时内“硬编码”的“poll()”行为,并且无法更改它。