Spring boot 在spring cloud stream kafka binder中接受二进制json消息的属性是什么

Spring boot 在spring cloud stream kafka binder中接受二进制json消息的属性是什么,spring-boot,apache-kafka,spring-cloud-stream,Spring Boot,Apache Kafka,Spring Cloud Stream,我正在使用SpringCloudStreamKafka活页夹来使用来自kafka主题的消息。源系统正在以ascii格式发送json消息。当我的消费者听到它抛出的主题时 o.s.c.s.b.k.KafkaMessageChannelBinder : Could not convert message: 7B22736.. 在.yml文件中是否可以设置任何属性来反序列化它?或者有一个我可以研究的例子吗?我不知道你说的十六进制二进制数据中的json是什么意思如果你说它是字节[]中的ascii数

我正在使用SpringCloudStreamKafka活页夹来使用来自kafka主题的消息。源系统正在以ascii格式发送json消息。当我的消费者听到它抛出的主题时

o.s.c.s.b.k.KafkaMessageChannelBinder    : Could not convert message: 7B22736..

在.yml文件中是否可以设置任何属性来反序列化它?或者有一个我可以研究的例子吗?

我不知道你说的十六进制二进制数据中的
json是什么意思
如果你说它是
字节[]
中的ascii数据,试着添加
spring.cloud.stream.bindings.input.content type=text/plain
(或者
应用程序/json
).

我不确定您所说的十六进制二进制数据中的
json是什么意思
如果您指的是
字节[]
中的ascii数据,请尝试添加
spring.cloud.stream.bindings.input.content type=text/plain
(或
应用程序/json
)。

您可以在此处查找配置属性:

在您的情况下,可以通过执行以下操作进行设置:

spring.cloud.stream.kafka.bindings.<channelName>.consumer.configuration.value.deserializer=<Deserialzier class>
spring.cloud.stream.kafka.bindings..consumer.configuration.value.deserializer=

Kafka binder从配置映射中获取所有属性。因此,您可以使用任何通用卡夫卡消费者属性,并以这种方式传递它们

您可以在此处查找配置属性:

在您的情况下,可以通过执行以下操作进行设置:

spring.cloud.stream.kafka.bindings.<channelName>.consumer.configuration.value.deserializer=<Deserialzier class>
spring.cloud.stream.kafka.bindings..consumer.configuration.value.deserializer=

Kafka binder从配置映射中获取所有属性。因此,您可以使用任何通用卡夫卡消费者属性,并以这种方式传递它们

当我添加
内容类型时:纯/文本
spring.cloud.stream.bindings..consumer。‌​headerMode:raw
它工作了


谢谢大家!

当我添加
内容类型时:纯/文本
spring.cloud.stream.bindings..consumer。‌​headerMode:raw
它工作了


谢谢大家!

@ka2我在中看到了您的评论您是否找到了问题的解决方案?@ka2我在中看到了您的评论您是否找到了问题的解决方案?编辑了我的问题,当我使用内容类型时抛出错误:application/json。您是否尝试了text/plain?或者您可以将
spring.kafka.consumer.valueDerserializer
设置为
org.apache.kafka.common.serialization.StringDeserializer
。当我使用text/plain时,它可以转换为json,但在控制台中它仍然抛出相同的错误。在我正在使用的spring cloud stream kafka活页夹中找不到spring.kafka.consumer.valueDerserializer属性;这是昨天刚刚添加的(boot1.5支持)。我不确定如何用早期的绑定覆盖键/值反序列化器。编辑我的问题,当我使用内容类型:application/json时会引发错误。是否尝试了text/plain?或者您可以将
spring.kafka.consumer.valueDerserializer
设置为
org.apache.kafka.common.serialization.StringDeserializer
。当我使用text/plain时,它可以转换为json,但在控制台中它仍然抛出相同的错误。在我正在使用的spring cloud stream kafka活页夹中找不到spring.kafka.consumer.valueDerserializer属性;这是昨天刚刚添加的(boot1.5支持)。我不知道如何用早期的绑定覆盖键/值反序列化器。