SpringCloud 用戶定義的消息轉(zhuǎn)換器

2023-11-27 13:41 更新

Spring Cloud Stream公開了定義和注冊其他MessageConverters的機制。要使用它,請實現(xiàn)org.springframework.messaging.converter.MessageConverter,將其配置為@Bean,并用@StreamMessageConverter進行注釋。然后將其附加到MessageConverter的現(xiàn)有堆棧中。

 了解自定義MessageConverter實現(xiàn)已添加到現(xiàn)有堆棧的開頭很重要。因此,自定義MessageConverter實現(xiàn)優(yōu)先于現(xiàn)有實現(xiàn),您可以覆蓋它們并添加到現(xiàn)有轉(zhuǎn)換器中。

下面的示例說明如何創(chuàng)建消息轉(zhuǎn)換器bean以支持稱為application/bar的新內(nèi)容類型:

@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的轉(zhuǎn)換器和模式演變提供支持。有關(guān)詳細信息,請參見Schema 進化支持


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號