SpringCloud 用户定义的消息转换器
2023-11-27 13:41 更新
Spring Cloud Stream公开了定义和注册其他MessageConverters
的机制。要使用它,请实现org.springframework.messaging.converter.MessageConverter
,将其配置为@Bean
,并用@StreamMessageConverter
进行注释。然后将其附加到MessageConverter的现有堆栈中。
了解自定义
MessageConverter
实现已添加到现有堆栈的开头很重要。因此,自定义MessageConverter
实现优先于现有实现,您可以覆盖它们并添加到现有转换器中。
下面的示例说明如何创建消息转换器bean以支持称为application/bar
的新内容类型:
@EnableBinding(Sink.class) @SpringBootApplication public static class SinkApplication { ... @Bean @StreamMessageConverter public MessageConverter customMessageConverter() { return new MyCustomMessageConverter(); } } public class MyCustomMessageConverter extends AbstractMessageConverter { public MyCustomMessageConverter() { super(new MimeType("application", "bar")); } @Override protected boolean supports(Class<?> clazz) { return (Bar.class.equals(clazz)); } @Override protected Object convertFromInternal(Message<?> message, Class<?> targetClass, Object conversionHint) { Object payload = message.getPayload(); return (payload instanceof Bar ? payload : new Bar((byte[]) payload)); } }
Spring Cloud Stream还为基于Avro的转换器和模式演变提供支持。有关详细信息,请参见“ Schema 进化支持 ”。
以上内容是否对您有帮助:
更多建议: