反序列化期间的使用者架构更新

时间:2019-02-08 12:37:33

标签: apache-kafka avro confluent-schema-registry

我目前正在研究Avro模式系统,据我了解,模式更新的流程是:

1)客户端更改架构(可能通过向后兼容添加默认值的新字段),并将数据发送给使用更新后的架构序列化的Kafka。

2)架构注册表会进行兼容性检查,并使用新版本和唯一ID注册新版本的架构。

3)使用者(仍然使用旧架构)尝试对数据进行反序列化,而架构演进会丢弃新字段,从而允许使用者对数据进行反序列化。

据我了解,我们需要显式更新 架构更改后的使用者,以便向他们提供最新的架构。 但是,为什么消费者在看到ID更改后才拉最新的架构?

1 个答案:

答案 0 :(得分:2)

如果使用者模式使用的是SpecificRecord子类,则需要更新它们。这实际上是在跳过模式ID查找

如果您希望它始终与最新版本匹配,则可以对/ latest进行注册表的http调用并获取它,然后重新启动应用程序。

或者,如果您始终希望使用者使用消息的ID,请使用// Sass configuration var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('sass', function () { gulp.src('*.scss') .pipe(sass()) .pipe(gulp.dest(function (f) { return f.base; })) }); gulp.task('clean', function() { }) gulp.task('watch', function() { gulp.watch('*.scss', ['sass']); }) gulp.task('default', function(done) { //<---- Insert 'done' as a parameter here... gulp.series('clean','sass', 'watch') done(); //<---- ...and call it here }) 作为对象类型