当前位置: 首页 > 知识库问答 >
问题:

解边界可能会产生无效的模式

易淳
2023-03-14

我面临Avro和模式注册表的问题。在Debezium创建了一个模式和一个主题之后,我从模式注册表下载了该模式。我把它放在一个.asvc文件中,它看起来像这样:

  {
    "type": "record",
    "name": "Envelope",
    "namespace": "my.namespace",
    "fields": [
      {
        "name": "before",
        "type": [
          "null",
          {
            "type": "record",
            "name": "MyValue",
            "fields": [
              {
                "name": "id",
                "type": "int"
              }
            ]
          }
        ],
        "default": null
      },
      {
        "name": "after",
        "type": [
          "null",
          "MyValue"
        ],
        "default": null
      }
    ]
  }

我做了两个实验:

>

我使用avro maven插件中的“生成源代码”来生成Java类。当我尝试使用上述主题时,我看到了以下错误:

线程“b2-StreamThread-1”中的异常org.apache.kafka.streams.errors.StreamsException:进程中捕获的异常。[...]:注册Avro模式时出错:[...]

原因:io.confluent.kafka.schemaregistry.client.rest.exceptions。RestClientException:正在注册的模式与早期的模式不兼容;错误代码:409

有没有人面临同样的问题?是Debezium产生了无效的模式,还是模式注册表有缺陷?

共有1个答案

昌博易
2023-03-14

MyValue不正确。

这不是Avro类型。您必须将实际记录嵌入到联合中,就像before值一样

换句话说,您无法交叉引用模式中的记录类型,AFAIK

当我尝试使用上述主题时,我看到了以下错误:

消费者不注册模式,所以不清楚你是如何得到这个错误的,除非可能使用Kafka流,它生成中间主题

 类似资料:
  • 我有很多这样的电话: AndroidStudio告诉我,他们可能会获得: -如果第二个参数为null,方法返回null-如果第二个参数为null,否则返回null -一个典型的方法,如果传递给它true将引发异常 检查可以配置为使用自定义注释(默认情况下将使用来自annotations.jar的注释) 幸运的是,everithing可以工作,但我可以对这段代码进行改进吗?

  • 我的服务等级代码如下: 我的测试课程如下: 在运行测试时,我在给出Mockito的那一行得到了NullPointerException。何时返回条件。我尝试了很多组合,但它仍然提供NPE。我甚至连方法调用都做不到。你能告诉我哪里出了问题吗?

  • 问题内容: 我正在关注Android图书示例: 该项目可以在Android Studio中运行,但在线上带有黄色警告: 与: 根据我的理解,返回一个Object,然后(Integer)将其转换为int类型,以与满足。 您能告诉我该信息的确切含义吗,对于初学者来说,您的回答将是值得的。 我可以这样写上限吗?使用 () 将getIntent()。getExtras()。get()打包为一个整体,因为它

  • 我不确定如何处理这个问题。 给定一个无向图,每条边的颜色要么是红色,要么是蓝色。如何在时间复杂度(O(m+n)log n)中找到包含尽可能少的红边的最小生成树。其中m个顶点和n个边。 任何帮助都将不胜感激。

  • 问题内容: 两种方法中的哪一种符合W3C标准?它们在浏览器中的表现均符合预期吗? 边界:无; 边界:0; 问题答案: 两者均有效。 这是你的选择。 我喜欢,因为它更短。我觉得这更容易阅读。您可能会发现更清晰。我们生活在功能强大的CSS后处理器世界中,因此我建议您使用您喜欢的任何东西,然后通过“压缩机”运行它。这里没有值得战斗的圣战。 综上所述,如果您要手写所有的生产CSS,尽管评论中有些抱怨,但我

  • 我使用一个自定义JsonConverter与System.Text.Json为了有DateTime与所需的时区 我在中这样注册它 就像您在代码中看到的那样,当收到没有时区的日期时,它将崩溃并出现异常,这将导致错误500 InternalServerError 我如何抛出异常以返回400而不触碰使用应用程序。UseExceptionHandler(因为代码在我的库中)? 请注意,引发的异常是Form