You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rocketmq.apache.org by GitBox <gi...@apache.org> on 2022/09/19 09:06:09 UTC
[GitHub] [rocketmq-schema-registry] humkum opened a new pull request, #63: check schema compatibility by schema recordID during ser/de
humkum opened a new pull request, #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63
In serialize method, using reflection to get schema idl producer provided, and get the target schema from registry storage, and put the target schema recordID into the message head.
In deserializer, using the recordId decoded from message, to get the corresponding schema, and use the schema decode the message.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] ferrirW commented on a diff in pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
ferrirW commented on code in PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63#discussion_r978248261
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroSerializer.java:
##########
@@ -62,10 +65,19 @@ public byte[] serialize(
if (record == null) {
return null;
}
+ String purposeSchema;
+ if (record instanceof GenericRecord) {
+ purposeSchema = ((GenericContainer) record).getSchema().toString();
+ } else {
+ purposeSchema = SpecificData.get().getSchema(record.getClass()).toString();
+ }
try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
BinaryEncoder encoder = encoderFactory.directBinaryEncoder(out, null);
- GetSchemaResponse response = getSchemaBySubject(subject);
+ GetSchemaResponse response = schemaRegistry.getTargetSchema(subject, purposeSchema);
+ if (response == null) {
Review Comment:
同上
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -69,38 +72,58 @@ public T deserialize(String subject, byte[] payload)
}
try {
- GetSchemaResponse response = schemaRegistry.getSchemaBySubject(subject);
- Schema schema = new Schema.Parser().parse(response.getIdl());
- return avroDecode(payload, schema);
- } catch (RestClientException | IOException e) {
- throw new RuntimeException(e);
+ ByteArrayInputStream bais = new ByteArrayInputStream(payload);
+ BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(bais, null);
+
+ ByteBuffer buffer = ByteBuffer.allocate(16);
+ try {
+ decoder.readBytes(buffer);
+ } catch (Exception e) {
+ log.error("read bytes error: ", e);
+ }
+ long schemaRecordId = buffer.getLong();
+ GetSchemaResponse response = schemaRegistry.getSchemaByRecordId(subject, schemaRecordId);
+ if (response == null) {
+ throw new SerializationException("there's no version schema from service can deserialize this object");
+ }
+ Schema writerSchema = new Schema.Parser().parse(response.getIdl());
+ if (readerSchema == null) {
+ readerSchema = getReaderSchema(writerSchema);
+ }
+
+ DatumReader<T> datumReader = getDatumReader(writerSchema, readerSchema);
+ return datumReader.read(null, decoder);
+ } catch (RestClientException e) {
+ throw new SerializationException("get schema by record id failed, maybe the schema storage service not available now", e);
+ } catch (IOException e) {
Review Comment:
内部的 try-catch 和外部的合并一下
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -69,38 +72,58 @@ public T deserialize(String subject, byte[] payload)
}
try {
- GetSchemaResponse response = schemaRegistry.getSchemaBySubject(subject);
- Schema schema = new Schema.Parser().parse(response.getIdl());
- return avroDecode(payload, schema);
- } catch (RestClientException | IOException e) {
- throw new RuntimeException(e);
+ ByteArrayInputStream bais = new ByteArrayInputStream(payload);
+ BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(bais, null);
+
+ ByteBuffer buffer = ByteBuffer.allocate(16);
+ try {
+ decoder.readBytes(buffer);
+ } catch (Exception e) {
+ log.error("read bytes error: ", e);
+ }
+ long schemaRecordId = buffer.getLong();
+ GetSchemaResponse response = schemaRegistry.getSchemaByRecordId(subject, schemaRecordId);
+ if (response == null) {
Review Comment:
这里不会返回 null 吧?
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -69,38 +72,58 @@ public T deserialize(String subject, byte[] payload)
}
try {
- GetSchemaResponse response = schemaRegistry.getSchemaBySubject(subject);
- Schema schema = new Schema.Parser().parse(response.getIdl());
- return avroDecode(payload, schema);
- } catch (RestClientException | IOException e) {
- throw new RuntimeException(e);
+ ByteArrayInputStream bais = new ByteArrayInputStream(payload);
+ BinaryDecoder decoder = DecoderFactory.get().binaryDecoder(bais, null);
+
+ ByteBuffer buffer = ByteBuffer.allocate(16);
+ try {
+ decoder.readBytes(buffer);
+ } catch (Exception e) {
+ log.error("read bytes error: ", e);
Review Comment:
异常需要做处理
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -59,7 +58,11 @@ public void configure(Map<String, Object> configs) {
}
@Override
- public T deserialize(String subject, byte[] payload)
+ public T deserialize(String subject, byte[] payload) {
+ return this.deserialize(subject, payload, null);
+ }
Review Comment:
不太理解 Streams 场景为何不能要求数据一定带着 recordId,本质上增加 schema 就是通过限制来保证链路上的类型安全,如果为了灵活性去掉这个限制的话,感觉和旧版本没有太大的区别了
但是从实现角度上增加一种不依赖 Schema server 的分支,我觉得也没问题 @humkum 可以考虑先加上
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] MatrixHB commented on a diff in pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
MatrixHB commented on code in PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63#discussion_r975978943
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -59,7 +58,11 @@ public void configure(Map<String, Object> configs) {
}
@Override
- public T deserialize(String subject, byte[] payload)
+ public T deserialize(String subject, byte[] payload) {
+ return this.deserialize(subject, payload, null);
+ }
Review Comment:
Can this method support both bySubject and byRecordId? For example, add a configuration item for _SerdeConfig_?
Because byRecordId is applicable to message and rocketmq-connect, but not to rocketmq-streams, because the streams scenario cannot require that the data written to MQ must have a recordId, which will greatly reduce the flexibility of streams applications.
能否通过这一个方法,同时支持bySubject和 byRecordId 两种方式?? 比如增加 SerdeConfig 的一个配置项?
因为byRecordId 适用于message场景和connect场景,但是不适用于streams场景,streams场景无法要求写入MQ的数据一定要带着recordId,这会大大降低streams应用的灵活性(也就是需要允许payload完全是消息内容,不带recordId,这样的设计才更有灵活性)。
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] MatrixHB commented on a diff in pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
MatrixHB commented on code in PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63#discussion_r983052516
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -59,7 +58,11 @@ public void configure(Map<String, Object> configs) {
}
@Override
- public T deserialize(String subject, byte[] payload)
+ public T deserialize(String subject, byte[] payload) {
+ return this.deserialize(subject, payload, null);
+ }
Review Comment:
1、byRecordId 更适合于message场景和connect场景,这两个场景下注重“限制”、“类型安全”,我觉得没问题。
2、但是schema的作用不会仅限于“限制”和“数据治理”,我认为另一个大的价值是“Table化”和“列读”,尤其在ETL 场景。假设我们原来有一个topic,Producer已经生产了大量的存量消息,我们创建了schema之后Producer还没来得及改造成传递recordId的 发送方式,这种情况下如果要用streams分析这些消息数据,会因为没有RecordId 直接无法解析而浪费掉数据。
3、我想表达的也不全是 “增加一种不依赖 Schema server 的分支”,而是我们的消息解析 可以同时支持 deserialize bySubject 和 byRecordId ,这两种都是依赖registry的,都是能保障类型安全的,只不过bySubject 的保障稍微弱一些,byRecordId 严格以版本为保障,类型安全更强。 但是 bySubject 可以让消息不强依赖 recordId,我们能分析的RocketMQ数据源才能更多、更灵活。
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] MatrixHB commented on a diff in pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
MatrixHB commented on code in PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63#discussion_r983052516
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -59,7 +58,11 @@ public void configure(Map<String, Object> configs) {
}
@Override
- public T deserialize(String subject, byte[] payload)
+ public T deserialize(String subject, byte[] payload) {
+ return this.deserialize(subject, payload, null);
+ }
Review Comment:
1、byRecordId 更适合于message场景和connect场景,这两个场景下注重“限制”、“类型安全”,我觉得没问题。
2、但是schema的作用不会仅限于“限制”和“数据治理”,我认为另一个大的价值是“Table化”和“列读”,尤其在ETL 场景。假设我们原来有一个topic,Producer已经生产了大量的存量消息,我们如果要用streams分析这些消息数据,会因为没有RecordId 直接无法解析而浪费掉。
3、我想表达的也不全是 “增加一种不依赖 Schema server 的分支”,而是我们的消息解析 可以同时支持 deserialize bySubject 和 byRecordId ,这两种都是依赖registry的,都是能保障类型安全的,只不过bySubject 的保障稍微弱一些,byRecordId 严格以版本为保障,类型安全更强。 但是 bySubject 可以让消息不强依赖 recordId,我们能分析的RocketMQ数据源才能更多、更灵活。
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] MatrixHB commented on a diff in pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
MatrixHB commented on code in PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63#discussion_r975976054
##########
storage-rocketmq/src/main/java/org/apache/rocketmq/schema/registry/storage/rocketmq/RocketmqStorageClientImpl.java:
##########
@@ -113,6 +113,21 @@ public SchemaRecordInfo getBySubject(QualifiedName qualifiedName) {
return versionSchemaMap.get(qualifiedName.getVersion());
}
+ @Override
+ public SchemaRecordInfo getTargetSchema(QualifiedName qualifiedName) {
+ // schema version is given
+ SchemaInfo schemaInfo = rocketmqClient.getSchemaInfoBySubject(qualifiedName.subjectFullName());
+ if (schemaInfo == null || schemaInfo.getDetails() == null || schemaInfo.getDetails().getSchemaRecords() == null) {
+ return null;
+ }
+ for (SchemaRecordInfo schemaRecordInfo : schemaInfo.getDetails().getSchemaRecords()) {
+ if (schemaRecordInfo.getIdl().equals(qualifiedName.getSchema())) {
+ return schemaRecordInfo;
+ }
+ }
+ return null;
Review Comment:
Is there any problem in simply comparing IDL by string "equals"? Some IDLs with different strings actually express equivalent meanings, for example, fields change order.
单纯将IDL进行字符串的equals比较,是否有问题? 有些字符串不完全一样的IDL,实际上表达的意义是等价的,比如字段调换了顺序
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] codecov-commenter commented on pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
codecov-commenter commented on PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63#issuecomment-1251702165
# [Codecov](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) Report
> Merging [#63](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (7213c0c) into [main](https://codecov.io/gh/apache/rocketmq-schema-registry/commit/98d7d9fed5394432823a911a65f3ae4d091e2eb4?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (98d7d9f) will **increase** coverage by `0.80%`.
> The diff coverage is `26.13%`.
```diff
@@ Coverage Diff @@
## main #63 +/- ##
============================================
+ Coverage 18.76% 19.56% +0.80%
- Complexity 56 65 +9
============================================
Files 45 45
Lines 906 966 +60
Branches 45 50 +5
============================================
+ Hits 170 189 +19
- Misses 723 759 +36
- Partials 13 18 +5
```
| [Impacted Files](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) | Coverage Δ | |
|---|---|---|
| [...ma/registry/client/NormalSchemaRegistryClient.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9yb2NrZXRtcS9zY2hlbWEvcmVnaXN0cnkvY2xpZW50L05vcm1hbFNjaGVtYVJlZ2lzdHJ5Q2xpZW50LmphdmE=) | `0.00% <0.00%> (ø)` | |
| [...a/registry/client/config/AvroSerializerConfig.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9yb2NrZXRtcS9zY2hlbWEvcmVnaXN0cnkvY2xpZW50L2NvbmZpZy9BdnJvU2VyaWFsaXplckNvbmZpZy5qYXZh) | `100.00% <ø> (ø)` | |
| [...ketmq/schema/registry/client/rest/RestService.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9yb2NrZXRtcS9zY2hlbWEvcmVnaXN0cnkvY2xpZW50L3Jlc3QvUmVzdFNlcnZpY2UuamF2YQ==) | `0.00% <0.00%> (ø)` | |
| [...try/client/serde/avro/GenericAvroDeserializer.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9yb2NrZXRtcS9zY2hlbWEvcmVnaXN0cnkvY2xpZW50L3NlcmRlL2F2cm8vR2VuZXJpY0F2cm9EZXNlcmlhbGl6ZXIuamF2YQ==) | `66.66% <0.00%> (+66.66%)` | :arrow_up: |
| [...ry/client/serde/avro/SpecificAvroDeserializer.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9yb2NrZXRtcS9zY2hlbWEvcmVnaXN0cnkvY2xpZW50L3NlcmRlL2F2cm8vU3BlY2lmaWNBdnJvRGVzZXJpYWxpemVyLmphdmE=) | `0.00% <0.00%> (ø)` | |
| [.../schema/registry/core/api/v1/SchemaController.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcm9ja2V0bXEvc2NoZW1hL3JlZ2lzdHJ5L2NvcmUvYXBpL3YxL1NjaGVtYUNvbnRyb2xsZXIuamF2YQ==) | `0.00% <0.00%> (ø)` | |
| [...chema/registry/core/service/SchemaServiceImpl.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcm9ja2V0bXEvc2NoZW1hL3JlZ2lzdHJ5L2NvcmUvc2VydmljZS9TY2hlbWFTZXJ2aWNlSW1wbC5qYXZh) | `0.00% <0.00%> (ø)` | |
| [...ema/registry/client/serde/avro/AvroSerializer.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9yb2NrZXRtcS9zY2hlbWEvcmVnaXN0cnkvY2xpZW50L3NlcmRlL2F2cm8vQXZyb1NlcmlhbGl6ZXIuamF2YQ==) | `62.85% <28.57%> (-8.12%)` | :arrow_down: |
| [...a/registry/client/serde/avro/GenericAvroSerde.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9yb2NrZXRtcS9zY2hlbWEvcmVnaXN0cnkvY2xpZW50L3NlcmRlL2F2cm8vR2VuZXJpY0F2cm9TZXJkZS5qYXZh) | `66.66% <50.00%> (ø)` | |
| [...istry/client/serde/avro/GenericAvroSerializer.java](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-Y2xpZW50L3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9yb2NrZXRtcS9zY2hlbWEvcmVnaXN0cnkvY2xpZW50L3NlcmRlL2F2cm8vR2VuZXJpY0F2cm9TZXJpYWxpemVyLmphdmE=) | `72.72% <50.00%> (+72.72%)` | :arrow_up: |
| ... and [4 more](https://codecov.io/gh/apache/rocketmq-schema-registry/pull/63/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) | |
:mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] MatrixHB commented on a diff in pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
MatrixHB commented on code in PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63#discussion_r975978943
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -59,7 +58,11 @@ public void configure(Map<String, Object> configs) {
}
@Override
- public T deserialize(String subject, byte[] payload)
+ public T deserialize(String subject, byte[] payload) {
+ return this.deserialize(subject, payload, null);
+ }
Review Comment:
Can this method support both bySubject and byRecordId? For example, add a configuration item for _SerdeConfig_?
Because byRecordId is applicable to message and rocketmq-connect, but not to rocketmq-streams, because the streams scenario cannot require that the data written to MQ must have a recordId, which will greatly reduce the flexibility of streams applications.
能否通过这一个方法,同时支持bySubject和 byRecordId 两种方式?? 比如增加 SerdeConfig 的一个配置项?
因为byRecordId 适用于message场景和connect场景,但是不适用于streams场景,streams场景无法要求写入MQ的数据一定要带着recordId,这会大大降低streams应用的灵活性。
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] ferrirW commented on a diff in pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
ferrirW commented on code in PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63#discussion_r983249656
##########
client/src/main/java/org/apache/rocketmq/schema/registry/client/serde/avro/AvroDeserializer.java:
##########
@@ -59,7 +58,11 @@ public void configure(Map<String, Object> configs) {
}
@Override
- public T deserialize(String subject, byte[] payload)
+ public T deserialize(String subject, byte[] payload) {
+ return this.deserialize(subject, payload, null);
+ }
Review Comment:
刚和坤明沟通了下,之前误解了 bySubject 的含义,现在这个理解应该是一致的 @MatrixHB
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [rocketmq-schema-registry] RongtongJin merged pull request #63: check avro schema compatibility by schema recordID during ser/de
Posted by GitBox <gi...@apache.org>.
RongtongJin merged PR #63:
URL: https://github.com/apache/rocketmq-schema-registry/pull/63
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: dev-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org