Java 卡夫卡活页夹自定义序列化程序

Java 卡夫卡活页夹自定义序列化程序,java,apache-kafka,spring-cloud-stream,Java,Apache Kafka,Spring Cloud Stream,在spring cloud stream kafka中,我们可以通过配置定义自定义键或值反序列化器: spring.cloud.stream.kafka.binder.configuration.value.deserializer: com.example.demo.serde.CustomDeserializer 理想化器类: package com.example.demo.serde; import org.apache.kafka.common.serialization.Dese

在spring cloud stream kafka中,我们可以通过配置定义自定义键或值反序列化器:

spring.cloud.stream.kafka.binder.configuration.value.deserializer: com.example.demo.serde.CustomDeserializer
理想化器类:

package com.example.demo.serde;

import org.apache.kafka.common.serialization.Deserializer;

public class CustomDeserializer implements Deserializer<String> {

    @Override
    public String deserialize(String s, byte[] bytes) {
        return "Custom deserialization";
    }
}
package com.example.demo.serde;
导入org.apache.kafka.common.serialization.Deserializer;
公共类CustomDeserializer实现反序列化器{
@凌驾
公共字符串反序列化(字符串s,字节[]字节){
返回“自定义反序列化”;
}
}
这很好,但我如何通过Spring java配置定义反序列化程序的自定义kafka序列化程序,如下所示:

@Configuration
public class KafkaConfig {

    @Bean
    public Deserializer<String> customDeserializer() {
        return new CustomDeserializer();
    }

}
@配置
公共级卡夫卡康菲{
@豆子
公共反序列化程序customDeserializer(){
返回新的CustomDeserializer();
}
}

如何在spring cloud stream中通过java配置定义自定义序列化器或反序列化器bean?

为什么需要它是bean?有时我需要从spring配置中将一些参数传递给反序列化器,如下所示:@bean public deserializer customDeserializer(@Value(${some.param}”)String param){返回新的自定义反序列化程序(字符串参数);}序列化程序不接受构造函数参数,它们有自己的配置方法……您可以以汇合的Avro序列化程序为例,只需在spring属性中传递
value.derserializer.prop
,我可以通过序列化程序#configure方法传递参数表单配置。但是使用spring kafka,我们可以配置KafkaTemplate、Serializer和反序列化器通过java config使用构造函数参数。使用spring cloud stream是否可以使用相同的方法?否;spring cloud stream不支持向使用者或生产者工厂注入(反)序列化器对象,仅通过属性和
configure()
方法配置它们。