Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 架构注册表中的键架构是什么?_Java_Apache Kafka_Avro_Confluent Schema Registry - Fatal编程技术网

Java 架构注册表中的键架构是什么?

Java 架构注册表中的键架构是什么?,java,apache-kafka,avro,confluent-schema-registry,Java,Apache Kafka,Avro,Confluent Schema Registry,我不知道密钥模式的确切概念,它是什么,为什么它必须被用作密钥是自动生成的,我们只是传递一个值(消息) 对于value,我们将一个模式传递给AVRO Serialiser,Serialiser从模式注册表获取它的模式id,并将模式id嵌入我们传递的值(消息)(如果我错了,请更正我)。钥匙怎么了 我们还需要传递密钥模式吗? 传递密钥模式的重要性是什么? 如何传递密钥模式?卡夫卡消息是密钥/值对。您设置的关键取决于您和您正在实施的要求 消息键用于分区分配。通常情况下,您会根据预期的处理以及您希望对数据

我不知道密钥模式的确切概念,它是什么,为什么它必须被用作密钥是自动生成的,我们只是传递一个值(消息)

对于value,我们将一个模式传递给AVRO Serialiser,Serialiser从模式注册表获取它的模式id,并将模式id嵌入我们传递的值(消息)(如果我错了,请更正我)。钥匙怎么了

我们还需要传递密钥模式吗? 传递密钥模式的重要性是什么?
如何传递密钥模式?

卡夫卡消息是密钥/值对。您设置的关键取决于您和您正在实施的要求


消息键用于分区分配。通常情况下,您会根据预期的处理以及您希望对数据施加的任何严格顺序为消息设置关键帧。例如,如果您希望在同一消费者组中有多个并行流程,且每个流程都接收给定客户的所有记录,则可以键入客户ID。

使用@Robin的答案添加更多信息

由于每个kafka消息都有一个键和值,所以键可以是null或一些基本类型值

如果为主题T发送带有字符串类型键和整数类型值的消息,Schema registry将创建两个主题:T-keyT-value


T-key将存储字符串类型键的avro模式。若并没有键附加到消息(空类型),它将不会在模式注册表中注册任何模式

您说过“若并没有键附加到消息(空类型),它将不会在模式注册表中注册任何模式”。如果密钥是自动生成的呢?关于密钥模式有什么想法吗?我读到生产者自己选择它将消息发送到的分区。然后它将自己将密钥(分区id)附加到消息。是不是正确?如果在发布消息时没有向kafka producer传递密钥,它会选择随机分区,因为密钥为null。卡夫卡记录键和分区键是两个不同的概念。根据分区策略,一个分区可以包含多个键。请参考链接了解更多详细信息,如果我没有将任何键附加到我的消息,那么它将首先找到它的分区以获取该键,或者它将在模式注册表中获取注册表。如果,它首先进入寄存器,那么它将失败,对吗?那么,我们首先要做什么?另外,如何传递密钥模式,是否有必要?