首页 > 解决方案 > Spring Cloud Stream - 将 Serdes 提供给个人消费者/生产者

问题描述

我试图将单独的 Serdes 放在我的每个消费者身上,而不是全部。例如,这会将 Avro Deserializer 添加到我的应用程序中的所有消费者。我只想要一个消费者

spring.cloud.stream.kafka.binder.consumerProperties.value.deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer

如果我做这样的事情,它会起作用

spring.cloud.stream.bindings.scheduler-in-from-external-event.content-type=application/*+avro

但似乎没有办法为单个消费者/生产者指定 Serde,即

spring.cloud.stream.kafka.binder.scheduler-in-from-external-event.consumer.configuration.key.deserializer=org.apache.kafka.common.serialization.StringDeserializer

spring.cloud.stream.kafka.binder.scheduler-in-from-external-event.consumer.configuration.value.deserializer=io.confluent.kafka.serializers.KafkaAvroDeserializer

这不起作用我是否缺少依赖项,或者有人可以指出我在我的属性文件中为单个生产者/消费者指定一个 serde 的方向吗?

标签: javaspringapache-kafkadeserializationspring-cloud-stream

解决方案


Serdes 是在特定于流的绑定属性上指定的...kafka.streams.bindings...

利用

spring.cloud.stream.kafka.streams.bindings.scheduler-in-from-external-event.consumer.key-serde=...
spring.cloud.stream.kafka.streams.bindings.scheduler-in-from-external-event.consumer.value-serde=...

此处的文档:https ://docs.spring.io/spring-cloud-stream-binder-kafka/docs/3.0.8.RELEASE/reference/html/spring-cloud-stream-binder-kafka.html#_kafka_streams_consumer_properties


推荐阅读