1

我在 Schema 注册表中注册了一个 Schema,如下所示:

{ Prop1:val1,
prop2:val2,
prop3:val3}

以上所有字段都是可选的

当我通过 Rest Proxy 发送数据负载时,如下所示:

{ "":val1, Prop2:val2, Prop3:val3 }

我希望架构注册表会引发错误。但这并没有发生。数据通过接收器连接器,第一个键/值对被忽略。

这是预期的行为吗?如果属性不存在,我如何强制出错(该属性是可选的,但是当我们发送空白属性时,它应该会抛出错误)。

4

1 回答 1

0

这似乎是 Avro 中的模式解析。

如果作者的记录包含一个名称不存在于读者记录中的字段,则忽略该字段的作者值。

来自: https ://avro.apache.org/docs/1.8.1/spec.html#Schema+Resolution

基本上在我融合的模式回购中 - 我要求一个模式来获取 3 个属性 - 所有都是可选的。

{
propA:val1,
propB:val2,
propC:val3
}

如果我发送的数据包具有其他属性或注册模式中不存在的属性,它们将被忽略。

{
"":val1, //<- considered as new property and ignored
propB:val2,
propC:val3
}
于 2019-03-20T15:38:17.567 回答