SpringCloud Avro Schema注册客户端消息转换器
对于已在应用程序上下文中注册了SchemaRegistryClient bean的应用程序,Spring Cloud Stream自动为架构管理配置Apache Avro消息转换器。由于接收消息的应用程序可以轻松访问可以与自己的读取器模式进行协调的写入器模式,因此这简化了模式的演变。
对于出站消息,如果通道的内容类型设置为application/*+avro
,则激活MessageConverter
,如下例所示:
spring.cloud.stream.bindings.output.contentType=application/*+avro
在出站转换期间,消息转换器尝试使用SchemaRegistryClient
推断每个出站消息的模式(基于其类型)并将其注册到主题(基于有效负载类型)。如果已经找到相同的模式,则将检索对其的引用。如果不是,则注册架构,并提供新的版本号。通过使用以下方案,将消息与contentType
头一起发送:application/[prefix].[subject].v[version]+avro
,其中prefix
是可配置的,而subject
是从有效负载类型推导出来的。
例如,类型为User
的消息可能作为二进制有效载荷发送,其内容类型为application/vnd.user.v2+avro
,其中user
是主题,2
是版本号。
接收消息时,转换器从传入消息的标头中推断模式引用,并尝试检索它。该模式在反序列化过程中用作编写器模式。
更多建议: