9.4. 查找模式的策略


Kafka 客户端 serializer/deserializer 使用 Service Registry 策略 来确定在 Service Registry 中注册消息 schema 的工件 ID 或全局 ID。

对于给定的主题和消息,您可以使用以下 Java 类的实施:

  • ArtifactIdStrategy 返回工件 ID
  • GlobalIdStrategy 返回一个全局 ID

返回的工件 ID 取决于消息中的 是否被序列化。

每个 策略 的类组织在io. apicurio.registry.utils.serde.strategy 软件包中。

默认策略是 TopicIdStrategy,它查找名称与 Kafka 主题接收消息相同的 Service Registry 工件。

例如:

public String artifactId(String topic, boolean isKey, T schema) {
    return String.format("%s-%s", topic, isKey ? "key" : "value");
}
  • topic 参数是接收消息的 Kafka 主题的名称。
  • 当消息键被序列化时,isKey 参数为 true,消息值被序列化时为 false
  • schema 参数是消息被序列化/deserialized 的 schema。
  • 返回的 artifactID 是架构在服务注册表中注册的 ID。

您使用什么查找策略取决于您架构的存储方式和位置。例如,如果您具有具有相同 Avro 消息类型的不同 Kafka 主题,您可以使用使用 记录 ID 的策略。

返回工件 ID 的策略

基于 ArtifactIdStrategy 实施返回工件 ID 的策略。

RecordIdStrategy
使用架构完整名称的 Avro 特定策略。
TopicRecordIdStrategy
使用主题名称和架构全名的 Avro 特定策略。
TopicIdStrategy
(默认)使用主题名称和 后缀的策略。
SimpleTopicIdStrategy
仅使用该主题名称的简单策略.

返回全局 ID 的策略

基于 GlobalIdStrategy 实施返回全球 ID 的策略。

FindLatestIdStrategy
根据工件 ID 返回最新 schema 版本的全局 ID 的策略。
FindBySchemaIdStrategy
匹配架构内容(基于工件 ID)的策略,以返回全局 ID。
GetOrCreateIdStrategy
尝试根据工件 ID 获取最新架构的策略,如果不存在,则会创建一个新架构。
AutoRegisterIdStrategy
更新架构的策略,并使用更新的 schema 的全局 ID。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.