在Spring Cloud Stream项目中,如何将传入的头映射为字符串而不是字节[]?

在Spring Cloud Stream项目中,如何将传入的头映射为字符串而不是字节[]?,spring,spring-integration,spring-kafka,spring-cloud-stream,spring-integration-dsl,Spring,Spring Integration,Spring Kafka,Spring Cloud Stream,Spring Integration Dsl,我有一个简单的SpringCloudStream项目,使用SpringIntegrationDSL流和Kafka活页夹。一切都很好,但是来自Kafka的消息头值以byte[]的形式到达 这意味着我的SI@Header参数的类型必须是byte[]。这是可行的,但最好将它们作为字符串(我关心的所有入站头都是字符串值) 我已经将Kafka客户端配置为使用StringSerializer/StringDeserializer。我假设我还需要告诉Spring Kafka哪些头映射为字符串,以及使用什么字符

我有一个简单的SpringCloudStream项目,使用SpringIntegrationDSL流和Kafka活页夹。一切都很好,但是来自Kafka的消息头值以
byte[]
的形式到达

这意味着我的SI
@Header
参数的类型必须是
byte[]
。这是可行的,但最好将它们作为字符串(我关心的所有入站头都是字符串值)

我已经将Kafka客户端配置为使用StringSerializer/StringDeserializer。我假设我还需要告诉Spring Kafka哪些头映射为字符串,以及使用什么字符编码


很明显,我遗漏了一些东西。有什么提示吗?

将binder属性
headerMapperBeanName
设置为
DefaultKafkaHeaderMapper
bean的bean名称

春天、云彩、溪流、卡夫卡、活页夹、headerMapperBeanName

KafkaHeaderMapper的bean名称,用于将spring消息头映射到Kafka头和从Kafka头映射。例如,如果您希望在使用JSON反序列化头的
DefaultKafkaHeaderMapper
中自定义受信任的包,请使用此选项

然后,您可以指定要由映射器映射为字符串的标题:

/**
 * Set the headers to not perform any conversion on (except {@code String} to
 * {@code byte[]} for outbound). Inbound headers that match will be mapped as
 * {@code byte[]} unless the corresponding boolean in the map value is true,
 * in which case it will be mapped as a String.
 * @param rawMappedHeaders the header names to not convert and
 * @since 2.2.5
 * @see #setCharset(Charset)
 * @see #setMapAllStringsOut(boolean)
 */
public void setRawMappedHeaders(Map<String, Boolean> rawMappedHeaders) {
/**
*将头设置为不在上执行任何转换(除了{@code String}到
*{@code byte[]}用于出站)。匹配的入站标头将映射为
*{@code byte[]}除非映射值中对应的布尔值为true,
*在这种情况下,它将映射为字符串。
*@param rawMappedHeaders将头名称设置为不转换,并且
*@自2.2.5起
*@see#setCharset(Charset)
*@see#setMapAllStringsOut(布尔值)
*/
公共void setRawMappedHeaders(映射rawMappedHeaders){

SetRawMappedheader中的拼写错误该拼写错误实际上在方法名称中出现了一段时间。它已被修复。