对于最新稳定版本,请使用spring-cloud-stream 5.0.1spring-doc.cadn.net.cn

用户自定义消息转换器

Spring Cloud Stream 提供了一种机制来定义和注册额外的 MessageConverter s。 要使用它,请实现 org.springframework.messaging.converter.MessageConverter,将其配置为一个 @Bean。 然后它会追加到现有的 MessageConverter s 栈中。spring-doc.cadn.net.cn

重要的是要理解,自定义 MessageConverter 实现会被添加到现有栈的顶部。因此,自定义 MessageConverter 实现会优先于现有的实现,这使您能够覆盖并扩展现有的转换器。

以下示例展示了如何创建一个消息转换器 bean,以支持一种名为 application/bar 的新内容类型:spring-doc.cadn.net.cn

@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));
    }
}