用户自定义消息转换器
Spring Cloud Stream 提供了一种机制来定义和注册额外的 MessageConverter s。
要使用它,请实现 org.springframework.messaging.converter.MessageConverter,将其配置为一个 @Bean。
然后它会追加到现有的 MessageConverter s 栈中。
重要的是要理解,自定义 MessageConverter 实现会被添加到现有栈的顶部。因此,自定义 MessageConverter 实现会优先于现有的实现,这使您能够覆盖并扩展现有的转换器。 |
以下示例展示了如何创建一个消息转换器 bean,以支持一种名为 application/bar 的新内容类型:
@SpringBootApplication
public static class SinkApplication {
...
@Bean
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));
}
}