此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-stream 4.1.4spring-doc.cadn.net.cn

用户定义的消息转换器

Spring Cloud Stream 公开了一种机制来定义和注册额外的MessageConverters. 要使用它,请实现org.springframework.messaging.converter.MessageConverter,将其配置为@Bean. 然后,它被附加到现有的MessageConverters.spring-doc.cadn.net.cn

了解这种习俗很重要MessageConverterimplementations 被添加到现有堆栈的 head 中。 因此,自定义MessageConverterimplementations 优先于现有 implementations,这使您可以覆盖和添加到现有 Converters。

以下示例说明如何创建消息转换器 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));
    }
}