gpt4 book ai didi

spring - 如何在我的 Spring Cloud Stream 项目中将传入的 header 映射为 String 而不是 byte[]?

转载 作者:行者123 更新时间:2023-12-01 18:11:08 24 4
gpt4 key购买 nike

我有一个使用 Spring Integration DSL 流和 Kafka 活页夹的简单 Spring Cloud Stream 项目。一切正常,但来自 Kafka 的消息头值以 byte[] 的形式到达.

这意味着我的 SI @Header参数必须是 byte[] 类型.哪个有效,但是将它们作为字符串会很好(我关心的所有入站 header 都是字符串值)。

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

我显然在这里遗漏了一些东西。有小费吗?

最佳答案

设置绑定(bind)属性headerMapperBeanNameDefaultKafkaHeaderMapper 的 bean 名称 bean 。

spring.cloud.stream.kafka.binder.headerMapperBeanName

The bean name of a KafkaHeaderMapper used for mapping spring-messaging headers to and from Kafka headers. Use this, for example, if you wish to customize the trusted packages in a DefaultKafkaHeaderMapper that uses JSON deserialization for the headers.


然后,您可以指定要由映射器将哪些 header 映射为字符串:
/**
* 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) {

关于spring - 如何在我的 Spring Cloud Stream 项目中将传入的 header 映射为 String 而不是 byte[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58568209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com