向kafka中的许多应用程序发送消息的最佳实践
Best practice for send message to many applications in kafka
我的主题有很多分区。我希望许多应用程序读取来自该主题的所有消息。有些应用程序读取频繁,有些则在午夜读取。
对于这个问题,我在 Whosebug 或书中找不到任何帮助。
我如何在 kafka 中实现它?
谢谢
您需要 Kafka 消费者才能让您的应用程序使用来自 Kafka 主题的消息。如果您的每个应用程序都需要使用所有消息,那么您必须为每个应用程序分配一个不同的组 ID。
Kafka 将主题的分区分配给组中的消费者。它还保证消息只能由组中的单个消费者读取。分区是 Kafka 中的并行级别(如果你有 2 个分区,那么同一消费者组中最多可以有 2 个消费者)。
示例:
假设您的主题 example-topic
包含 5 个分区和 2 个应用程序,每个应用程序都必须使用来自 example-topic
的所有消息。您将需要两个不同的消费者组(每个应用程序一个),例如第一个应用程序 group.id=app-group-1
和第二个应用程序 group.id=app-group-2
。在每个消费者组中,您最多可以让 5 个消费者从您的主题中消费消息。因此,最多 5 个消费者将订阅主题 example-topic
并属于 group.id=app-group-1
,另外 5 个消费者将订阅主题 example-topic
并属于 group.id=app-group-2
。
我的主题有很多分区。我希望许多应用程序读取来自该主题的所有消息。有些应用程序读取频繁,有些则在午夜读取。
对于这个问题,我在 Whosebug 或书中找不到任何帮助。
我如何在 kafka 中实现它?
谢谢
您需要 Kafka 消费者才能让您的应用程序使用来自 Kafka 主题的消息。如果您的每个应用程序都需要使用所有消息,那么您必须为每个应用程序分配一个不同的组 ID。
Kafka 将主题的分区分配给组中的消费者。它还保证消息只能由组中的单个消费者读取。分区是 Kafka 中的并行级别(如果你有 2 个分区,那么同一消费者组中最多可以有 2 个消费者)。
示例:
假设您的主题 example-topic
包含 5 个分区和 2 个应用程序,每个应用程序都必须使用来自 example-topic
的所有消息。您将需要两个不同的消费者组(每个应用程序一个),例如第一个应用程序 group.id=app-group-1
和第二个应用程序 group.id=app-group-2
。在每个消费者组中,您最多可以让 5 个消费者从您的主题中消费消息。因此,最多 5 个消费者将订阅主题 example-topic
并属于 group.id=app-group-1
,另外 5 个消费者将订阅主题 example-topic
并属于 group.id=app-group-2
。