【问题标题】:What is @KafkaKey annotation used for@KafkaKey 注释用于什么
【发布时间】:2019-09-25 09:25:25
【问题描述】:

我是 Kafka 和 micronaut 的新手,我不了解 @KafkaKey 的用法。我在网上找到的是:

可以通过提供带有注释的参数来指定 Kafka 密钥 @KafkaKey。如果没有指定这样的参数,则使用空键发送记录。

那么它到底是什么意思呢?如果我不使用它会对我有什么影响?

【问题讨论】:

    标签: apache-kafka micronaut


    【解决方案1】:

    Kafka 消息键最重要的作用是分区。例如,如果选择的键是用户 ID,那么给定用户的所有数据都将发送到同一个分区。如果您不指定消息的键,Kafka 将使用循环策略进行消息分发。

    【讨论】:

    • 影响性能。 :) 错误使用 KafkaKey 的原因,例如,为所有消息设置一个密钥,您可以将所有数据发送到一个分区,这通常会降低性能。
    • @wardziniak 如果我没有设置密钥,消息将被分发,正如我在回答中提到的那样。如果我为所有消息设置常量键,他们不会。
    • 那么如果我们在收到控制器的请求后向kafka发送消息,是否需要从requestParam中获取这个key?
    • @user1474111 如果您的系统中没有任何特定的分区策略和策略“消息在分区之间随机分布”,您可以不指定键。
    【解决方案2】:

    Kafka 保留分区内的顺序。当您为特定消息类型指定键时,消息类型将绑定到与该键关联的特定分区。由于消息的顺序保留在分区中,因此您可以通过指定键来保留消息的顺序。如果您正在使用状态机,这将特别有用。

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 2012-02-20
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 2012-12-11
      相关资源
      最近更新 更多