Java Spring云流向Kafka主题发送数据失败

Java Spring云流向Kafka主题发送数据失败,java,spring,apache-kafka,spring-cloud-stream,Java,Spring,Apache Kafka,Spring Cloud Stream,我有一个SCS水槽应用程序。我正在尝试使用SpringKafka向kafka主题发送MessageBuilder消息 而且 我试图在这里有条件地使用弹簧卡夫卡。根据下面的代码,是否有一种方法可以使用SCS(即@SendTo等)实现这一点?理想情况下,我希望使用处理器,而不是接收器。只是不清楚条件转发 谢谢你抽出时间 demoSink: @EnableBinding(Sink.class) public class SampleSink { @Servic

我有一个SCS水槽应用程序。我正在尝试使用SpringKafka向kafka主题发送MessageBuilder消息

而且

我试图在这里有条件地使用弹簧卡夫卡。根据下面的代码,是否有一种方法可以使用SCS(即@SendTo等)实现这一点?理想情况下,我希望使用处理器,而不是接收器。只是不清楚条件转发

谢谢你抽出时间

demoSink:

        @EnableBinding(Sink.class)
    public class SampleSink {

        @ServiceActivator(inputChannel = Sink.INPUT)
        public void processor(Message<?> message) {

            @Autowired
            private Sender sender;

            Message<String> message1 = (Message<String>) MessageBuilder.fromMessage(message)
                                        .setHeader("header1", "header1")
                                        .copyHeadersIfAbsent(message.getHeaders())
                                        .build();
    if(someObj.getSomething()==something){
        sender.sendt1(message1);
}
    else{

    sender.sendt2(message)
}

    }

spring正在尝试将ByteArray强制转换为String对象,如果您只尝试转发消息,可以这样做: 改为:

Message<?> message1 = MessageBuilder.fromMessage(message)
                                    .setHeader("header1", "header1")
                                    .copyHeadersIfAbsent(message.getHeaders())
                                    .build();
message1=MessageBuilder.fromMessage(Message)
.setHeader(“header1”、“header1”)
.CopyHeadersFabSent(message.getHeaders())
.build();
在SenderConfig中,使用ByteArraySerializer.class代替键和值

@Configuration
public class SenderConfig {

    @Value("${spring.cloud.stream.kafka.binder.brokers}")
    private String bootstrapServers;

    @Bean
    public Map<String, Object> producerConfigs() {
        Map<String, Object> props = new HashMap<>();
        props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
        props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
        return props;
    }

    @Bean
    public ProducerFactory<String, String> producerFactory() {
        return new DefaultKafkaProducerFactory<>(producerConfigs());
    }

    @Bean
    public KafkaTemplate<String, String> kafkaTemplate() {
        return new KafkaTemplate<>(producerFactory());
    }

}
    Caused by:
 org.apache.kafka.common.errors.SerializationException: Can't convert value of class [B to class org.apache.kafka.common.serialization.StringSerializer
 specified in value.serializer
Caused by: java.lang.ClassCastException: 
[B cannot be cast to java.lang.String
Message<?> message1 = MessageBuilder.fromMessage(message)
                                    .setHeader("header1", "header1")
                                    .copyHeadersIfAbsent(message.getHeaders())
                                    .build();