2

我们计划让生产者(Java rest api)和消费者(Java 客户端)在多台机器上运行,并且所有消费者都属于同一个消费者组。

1)在这种情况下,如果我在生产者发布消息期间未指定分区,其中 Kafka 写入随机/默认分区......

2)当消费者检索消息时,如果我不提及分区,我会传递主题名称..并将偏移量提交给Kafka服务器..

如果我有一个消费者群体,这是一个好方法吗???

3)我是否需要拥有 Kafka 休息代理,据我了解,这不是必需的,因为我正在使用 Java 客户端..如果我错了,请纠正我...请让我知道如果我有什么好处我会得到在这里使用 Kafka 休息代理....

4

1 回答 1

3

从生产者的角度来看,如果记录没有任何键,生产者将在主题的分区之间以循环方式插入记录。从消费者的角度来看,如果任何消费者都可以处理来自该主题的任何记录,则无需指定分区,如果您实际上甚至不必提交偏移量,客户端可以使用auto.commit.enable=true.

是的,如果您有 1 个使用者组,您可以添加多个使用者并平衡组之间的负载(这取决于组中的使用者数量和分区数量)。

3)使用java客户端时不需要kafka rest代理,此外(如果我没记错的话)kafka rest代理依赖于模式注册表,所以你必须同时运行两者。

于 2016-02-24T09:14:18.853 回答