SpringCloud 支持Schema的转换器
2023-11-27 13:57 更新
AvroSchemaMessageConverter
支持通过使用预定义的架构或通过使用类中可用的架构信息(反射地或包含在SpecificRecord
中)来对消息进行序列化和反序列化。如果提供自定义转换器,则不会创建默认的AvroSchemaMessageConverter bean。以下示例显示了一个自定义转换器:
要使用自定义转换器,您只需将其添加到应用程序上下文中,就可以选择指定一个或多个与其关联的MimeTypes
。默认MimeType
为application/avro
。
如果转换的目标类型是GenericRecord
,则必须设置架构。
以下示例显示如何通过在没有预定义架构的情况下注册Apache Avro MessageConverter
在接收器应用程序中配置转换器。在此示例中,请注意,哑剧类型值为avro/bytes
,而不是默认的application/avro
。
@EnableBinding(Sink.class) @SpringBootApplication public static class SinkApplication { ... @Bean public MessageConverter userMessageConverter() { return new AvroSchemaMessageConverter(MimeType.valueOf("avro/bytes")); } }
相反,以下应用程序使用预定义的架构(在类路径上找到)注册一个转换器:
@EnableBinding(Sink.class) @SpringBootApplication public static class SinkApplication { ... @Bean public MessageConverter userMessageConverter() { AvroSchemaMessageConverter converter = new AvroSchemaMessageConverter(MimeType.valueOf("avro/bytes")); converter.setSchemaLocation(new ClassPathResource("schemas/User.avro")); return converter; } }
以上内容是否对您有帮助:
更多建议: